簡體   English   中英

從dom文本中刪除美元符號-而不是從js代碼

[英]Remove dollar sign from dom text - not from js code

我正在嘗試用另一個字符串替換網頁中所有出現的“ $”(美元符號)。
問題是可能有一些<script>標記可能包含我不想更改的“ $”(jQuery代碼)。

例如:
document.body.innerHTML = document.body.innerHTML.replace(/\\$/g, 'xxx'); 似乎有效,但也可以從任何<script>$('...')...</script>部分替換'$'。

這可以實現嗎?

先感謝您。

編輯:我無法修改頁面生成方式或更改所有其他js部分-都不使用某些服務器端邏輯。 我只能添加一些自定義js代碼

您可以過濾出腳本標簽

[].slice.call(document.body.children).forEach(function(element) {
    if ( element.tagName.toLowerCase() != 'script' ) {
        element.innerHTML = element.innerHTML.replace(/\$/g, 'xxx');
    }
});

小提琴

這不是遞歸的,這意味着它僅適用於body標記正下方的腳本標記,不適用於嵌套更深的腳本標記

function textNodes(main) {
    var arr = [];
    var loop = function(main) {
        do {
            if(main.hasChildNodes() && (["STYLE","SCRIPT"].indexOf(main.nodeName)==-1)){
                loop(main.firstChild);
            } else if(main.nodeType === 3) {
                arr.push(main)
            }

        }
        while (main = main.nextSibling);
    }
    loop(main);
    return arr;
}
textNodes(document.body).forEach(function(a){a.textContent=a.textContent.replace(/\$/g,'€')});

基於此DOM漫游示例

暫無
暫無

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

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