为什么我会......
SyntaxError:unterminated string literal
... Firefox 和...
未捕获的SyntaxError:无效或意外的令牌
...在 Chrome 中,当我跑...
$(document).ready(function () {
function addJSBeforeEndBody(code) {
$('body').append('<script>' + code + '</script>');
}
addJSBeforeEndBody('$(document).ready(function() { console.log("I never end up here."); });');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 0 :(得分:10)
分解字符串"</script>"
(在javascript代码中);它将被解释为一个实际的结束脚本标记,而不是您想要的字符串文字。
$(document).ready(function () {
function addJSBeforeEndBody(code) {
$('body').append('<script>' + code + '</scr' + 'ipt>');
}
addJSBeforeEndBody('$(document).ready(function() { console.log("It works now."); });');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 1 :(得分:2)
'<script>'+code.toString()+'<\/script>'
浏览器在看到'</script>'
时关闭脚本元素,指示脚本关闭标记。转义斜杠可使浏览器保持文本解释模式。
或如上所述将其分解:
"<script>"+code.toString()+"<"+"/script>"