簡體   English   中英

在JavaScript中剝離<和>並不能正常工作

[英]Stripping out < and > in javascript doesn't quite work

    function SanitizeInput(input) {



        input = input.replace(/</g, "&lt;");
        input = input.replace(/>/g, "&gt;");


        return input;
    }

document.write(SanitizeInput("Test!<marquee>bibble</marquee>"));

如果將其彈出到jsfiddle.net中,則結果為Test!<marquee>bibble</marquee而沒有結尾>

誰能解釋我在做什么錯?

編輯:用(和)替換它似乎完美地工作

您的布局/文檔中還必須有其他內容來影響這一點,您的代碼本身可以正常工作, 您可以在此處進行測試

你沒做錯什么 您使用的功能確實將所有<替換為&lt; >&gt; 只是那個document.write將經過清理的文本添加到HTML文檔中,然后實體被轉換回<>

只需嘗試alert而不是document.write

如果您真的想擁有&lt; 在頁面中可見的情況下,您應該對文本進行“雙重消毒”。

input = input.replace(/</g, "&amp;lt;");

附帶一提,您可以將替換調用鏈接起來,如下所示:

input = input.replace(/</g, "&lt;").replace(/>/g, "&gt;");

希望你覺得這個有用,
阿林

如果您要清理輸入內容,請嘗試類似以下操作-http://xkr.us/articles/javascript/encode-compare/

暫無
暫無

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

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