【问题标题】:SyntaxError: Unexpected EOF on closing </script>SyntaxError:关闭时出现意外的 EOF </script>
【发布时间】:2016-10-24 16:03:28
【问题描述】:

尝试动态添加此代码

<script>
$(document).ready(function(){
    var tagcodehead = "function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','{{ code }}');";

    var tagcodebody = "<noscript><iframe src='https://www.googletagmanager.com/ns.html?id=GTM-MN88H8'height='0'' width='0'' style='display:none;visibility:hidden'></iframe></noscript>";

    $(head).add("<script>" + tagcodehead + "</script>");
    $(head).prepend(tagcodebody);
})

浏览器给我:SyntaxError: Unexpected EOF

这是问题 - 关闭脚本标签

$(head).add("<script>" + tagcodehead + "</script>");

有什么帮助吗? 谢谢

【问题讨论】:

  • height='0'' width='0'' 引号错误?修复字符串中所有错误的引号!
  • 顺便说一句,如果禁用了 JavaScript,您希望添加 &lt;noscript&gt; 元素的具体情况如何?
  • 为什么不能直接执行JS代码?将其动态添加到单独的脚本标签只会使其不必要地复杂化。
  • 为什么会有任何不同?
  • @aleXela 它是标签管理器脚本的一部分并不会改变这样一个事实,即如果您正在运行 JavaScript,根据定义,您将不会运行 &lt;noscript&gt; 部分,因为这需要您已禁用 JS。您正在使用 JavaScript 添加仅在未启用 JavaScript 时才能访问的功能。

标签: javascript jquery eof


【解决方案1】:

您不能在脚本中嵌入带有&lt;/script&gt; 的文本。即使那个“标签”在一个字符串中,它仍然会终止浏览器的脚本块。你必须打破它:

$(head).add("<script>" + tagcodehead + "</scr" + "ipt>");

请记住 - 浏览器首先会破解页面/代码的原始文本,但它并不能直接理解 Javascript 是什么。它只理解 HTML,这意味着脚本块在块内的第一个 &lt;/script&gt; 实例处终止,无论结束标记如何/在块内的代码中出现。

【讨论】:

  • 如果此答案对您有帮助,请务必将其标记为正确@aleXela
猜你喜欢
  • 2013-04-25
  • 2011-07-15
  • 1970-01-01
  • 2019-04-28
  • 1970-01-01
  • 2017-10-03
  • 1970-01-01
相关资源
最近更新 更多