我有一个基本的 .js 文件,里面有这个
//$('#show').html('<%= escape_javascript(render(:partial => 'show')) %>');
当调用 .js 文件时,上面的代码将被执行,并且即使被注释掉,也会呈现部分代码。当代码被删除时,部分永远不会被渲染。 DOM 保持不变,但我可以在命令行看到服务器渲染的部分内容。给出了什么?
最佳答案
您正在注释掉在客户端执行的 JavaScript。
在客户端看到渲染的 JavaScript 之前,部分渲染发生在服务器端。
换句话说,注释掉 JavaScript 对服务器端处理的影响为零。如果您不想显示服务器端字符串,请将其注释掉:
<%#= escape_javascript(etc) %>
<小时/>
让我们假设部分渲染如下:
<h1>Foo bar baz</h1>
<div>Plugh!</div>
对 JavaScript 进行转义会将换行符转换为 \n
(并且会转义单引号和双引号等),从而在客户端留下以下内容:
$('#show').html('<h1>Foo bar baz</h1>\n<div>Plugh!</div>');
无论 JS 是否被注释掉,除非您注释掉 escape_javascript
Ruby 代码的结果,否则部分内容都会呈现。
在客户端,如果 JS 被注释掉,它不应该更新 show
的 HTML——你是说是这样吗?
关于javascript - 即使被注释掉,jQuery 代码仍然会被执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10664025/