【问题标题】:Weebly inserts backslashes into my javascript before forward slashesWeebly 在正斜杠之前将反斜杠插入我的 javascript
【发布时间】:2015-10-01 03:15:37
【问题描述】:

据我所知,每当我使用“嵌入代码”将包含模式 /</* 的 Javascript 插入 Weebly 页面时,它都会在已发布页面上替换为 /<\/*

例如,这段代码:

<script type="text/javascript">
    var hljs=new function(p){return p.replace(/</gm, "&lt;"}
</script>

当我在浏览器中检查最后一页时显示如下:

<script type="text/javascript">
    var hljs=new function(p){return p.replace(/<\/gm, "&lt;"}
</script>

这是一个问题,因为它似乎搞砸了正则表达式,这些正则表达式旨在对我在页面上显示的代码进行语法高亮显示。我正在使用从 R Markdown 生成的 html + Javascript。当我在浏览器中打开 html 文件时,它们看起来很好,但是当我查看我放在 weebly 上的版本时,没有语法突出显示,并且我得到一个 SyntaxError(Chrome 中的Invalid regular expression flags,FireFox 中的unmatched ) in regular expression)。如果我查看源代码,唯一的区别是额外的反斜杠。

有人有解决办法吗?

更新:原来这是另一个问题的征兆。当 Rmarkdown 生成 html 时,它包含一个 &lt;head&gt;&lt;/head&gt; 块。重要的是要进入页面的实际标题。将整个内容粘贴到“嵌入代码”框中,就像我正在做的那样,将所有内容都推入正文。所以真正的解决方案是进入设计选项卡,将 Rmarkdown 标头代码添加到与您正在使用的页面布局对应的文件的标头中。

【问题讨论】:

    标签: javascript html r-markdown weebly


    【解决方案1】:

    您可以尝试new RegExp(string, flags); 语法。

    <script type="text/javascript"> var hljs=new function(p){return p.replace(new RegExp("<", "gm"), "&lt;"} </script>

    这样可以避免 Weebly 强制角色转义。

    【讨论】:

    • 这解决了正则表达式的问题!还有一些纯字符串导致了同样的问题(例如,任何对“”的引用)。我使用了此处描述的 String.fromCharCode 解决方法 (stackoverflow.com/questions/8981009/…) 来解决这些问题。当然,整个语法错误问题被证明是一种症状,而不是原因。真正的问题是页眉没有放入实际的页眉中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 2016-06-16
    • 2013-11-14
    • 2017-05-12
    相关资源
    最近更新 更多