簡體   English   中英

動態數據中帶有未轉義引號的JavaScript字符串聲明

[英]JavaScript string declarations from dynamic data with unescaped quotation marks

我正在為內容管理系統編寫JavaScript模板,其中用戶填寫傳遞給我的模板的文本輸入字段。

我的問題是輸入字段中的引號在傳遞到我的模板之前不會轉義,因此我無法知道它們是包含單引號還是雙引號,甚至都包含引號。 無論用哪種方式處理數據,我的代碼最終都會中斷,因為引號會終止字符串聲明。 我想在數據上運行一個函數以轉義引號,但是我找不到一種首先將數據放入有效變量的方法。

有沒有辦法在不破壞字符串變量聲明的情況下安全地處理JavaScript中的數據?

編輯:我正在發布代碼示例;

CMS文本輸入字段的值是:誰將贏得我們的“大賽”?

文本輸入字段占位符宏為[%TextInput%]

我正在使用JS / HTML / CSS為此輸入構建HTML模板

<script>
(function(){
  var textInputStr = "[%TextInput%]";
})();
</script>

如果TextInput的值包含單引號,則將破壞字符串聲明,反之亦然。

我想在數據上運行一個函數以轉義引號,但是我找不到一種首先將數據放入有效變量的方法。

好吧,您必須先使其成為有效的字符串文字, 然后才能在其上運行JavaScript函數。 沒有其他方法(除非您計算對模板腳本的ajax請求以獲取其字符串表示形式)。

輸入字段在傳遞到我的模板之前不會轉義

然后解決。 在JavaScript中,您無能為力。

這是一個了不起的問題,值得一提。 像大多數其他現代語言一樣,JS中的字符串沒有自定義定界符,因此您可能會陷入困境。 但是一種解決方案是構建一個帶有占位符的腳本標簽,然后找到該標簽的innerHTML並將字符串重新獲取到變量中。 例如

<script id="parseMe" type="text/template">
[%TextInput%]
</script>

然后使用

var yourString = document.getElementById("parseMe").innerHTML

現在,您可以根據需要操縱字符串。

HTH!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM