2015-09-28 63 views
0

據我所知,任何時候使用「嵌入代碼」將包含模式/</*的Javascript插入到Weebly頁面中時,它將在發佈頁面上替換爲/<\/*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文件時,他們看起來很好,但是當我看着我放在周圍的版本時,沒有語法突出顯示,並且出現SyntaxError(Chrome中的Invalid regular expression flags,FireFox中的unmatched) in regular expression)。如果我查看源代碼,唯一的區別是額外的反斜槓。

任何人都有解決辦法嗎?

更新:原來這是一個不同問題的症狀。當Rmarkdown生成html時,它包含一個<head></head>塊。這對於進入頁面的實際頁眉非常重要。將所有東西粘貼到「嵌入代碼」框中,就像我在做的一樣,將所有東西都推到了身體中。所以真正的解決方案是轉到設計選項卡,並將Rmarkdown標題代碼添加到與您正在使用的頁面佈局相對應的文件的標題中。

回答

1

您可以嘗試new RegExp(string, flags);語法。

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

這可能避免Weebly迫使字符轉義。

+1

這解決了正則表達式的問題!還有一些純字符串導致了相同的問題(例如,任何對「」的引用)。我使用了這裏描述的String.fromCharCode解決方法來解決這些問題(http://stackoverflow.com/questions/8981009/can-you-create-a-javascript-string-without-using-or-quotes)。當然,這整個語法錯誤問題原來是一個症狀,而不是原因。真正的問題是標題沒有被放入實際的頁面標題中。 – seaotternerd