我有一个基本的.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/

10-13 02:18