【问题标题】:How is unicode parsed by JavaScript when a page is loaded?加载页面时JavaScript如何解析unicode?
【发布时间】:2014-07-23 04:22:38
【问题描述】:

我有一个独特的问题,我对 JavaScript 处理 unicode 的方式感到好奇。我正在建立一个持续部署系统,对字符串进行查找和替换。在开发环境中,我们显然不会在这些页面上包含谷歌分析,因为它们不是实时的。相反,我们会附上一个注释,例如 <!-- GA -->,它是通过查找/替换脚本 (Ansible) 定位的,然后分析代码就位。

这是我的问题:因为脚本的“替换”参数中不能有任何空格、特殊字符 (')、换行符等,我需要将我的谷歌分析代码压缩成一个字符串 - unicode 看起来像最合乎逻辑的选择。

这是我的问题:如果我只是在脚本标签中将其添加到我的 HTML 中,页面是否会有效地执行谷歌分析 javascript,即使它是 unicode 格式的?

<script>\u3404\u0024.....................</script>

...所有其他点只是更多的 unicode 转义字符。

或者,为了让它运行,我必须使用 eval,类似于以下?

<script>
  var unicode = "\u3404\u0024.....";
  eval(unicode);
</script>

为了让谷歌分析 JS 运行?

这是一个重要的生产站点,所以我不能冒这个代码不起作用的风险。提前致谢。

【问题讨论】:

    标签: javascript unicode google-analytics eval


    【解决方案1】:

    如果我只是在脚本标签中将其添加到我的 HTML 中,页面是否会有效地执行谷歌分析 javascript,即使它是 unicode 格式的?

    首先,您的示例不是“Unicode”,它只是使用JavaScript character escape sequences。字符串文字和正则表达式文字支持您使用的那些。

    要测试页面是否像这样执行转义的 JavaScript,你可以试试看:

    <script>\x61\x6C\x65\x72\x74\x28\x31\x29</script>
    

    这会引发语法错误,而不是执行未转义的版本 (alert(1))。

    请参阅section 15.1.9 of the ECMAScript standard 了解 JavaScript 是如何解析的。

    【讨论】:

    • 评估它是。谢谢
    猜你喜欢
    • 2013-01-26
    • 2014-03-24
    • 2013-06-08
    • 1970-01-01
    • 2020-06-30
    • 2015-11-25
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    相关资源
    最近更新 更多