我里面有一个基本的.js文件
//$('#show').html('<%= escape_javascript(render(:partial => 'show')) %>');
当调用.js文件时,上面的代码会被执行,部分也会被渲染,即使它被注释掉了。删除代码时,部分永远不会被渲染。 DOM保持不变,但我可以看到服务器在命令行上呈现部分。是什么给了什么?
答案 0 :(得分:4)
您正在评论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 - 你说的是吗?
答案 1 :(得分:0)
检查这是否是该行,或者您在其他地方进行此呼叫:
//$('#show').html('<%=escape_javascript(render(:partial => 'show'))%>');alert('This is the line');
答案 2 :(得分:0)
也许你的escape_javascript函数正在插入换行符?这将结束评论并在新行执行后导致任何内容。
答案 3 :(得分:0)
我遇到了类似的问题,想出了我想要的方法。也许这样的事情会帮助你!
不要将代码行注释掉,而是尝试构建一个逻辑运算符,为您提供&#34;开/关&#34;切换您要运行的功能。我这样设置,所以我可以关闭脚本,但保留它以供将来参考:
var toggle = 1;
if(toggle == 2){
functions that you want to run when turned on...
}
由于您的变量不等于2,因此if语句不会显示其中存储的内容,而是有效地评论&#39;那个代码给你!要将其重新打开,您只需更改“切换”按钮即可。变量返回2(或者你想要的任何&#39; on&#39;值)。我只为自己找到了一点工作,希望有所帮助!