簡體   English   中英

Tampermonkey,Chrome,如何將html實體改回符號?

[英]Tampermonkey, Chrome, how to change html entities back to symbols?

有一個網頁通過將html代碼嵌入另一個html代碼來弄亂html代碼,當我嘗試用等價的符號替換實體時,它只會刪除所有內容。

這是我嘗試的代碼:

var marks = document.getElementsByTagName("body");
      for(var i = 0, l = marks.length; i < l; i++)
      {
         var mark = marks[i];
         mark.innerHTML = mark.innerHTML.replace('&lt;', '<');
         mark.innerHTML = mark.innerHTML.replace('&gt;', '>');
         mark.innerHTML = mark.innerHTML.replace('&amp;', '&');
      }

但這是它的作用: https : //jsfiddle.net/rkb89odm/2/

首先,您只替換第一個匹配項,而不是所有匹配項。

> '&lt;html&gt;&lt;body&gt;'.replace('&lt;', '<')
< "<html&gt;&lt;body&gt;"
> '&lt;html&gt;&lt;body&gt;'.replace(/&lt;/g, '<')
< "<html&gt;<body&gt;"
> '&lt;html&gt;&lt;body&gt;'.replace(/&lt;/g, '<').replace(/&gt;/g, '>');
< "<html><body>"

請參閱如何替換JavaScript中所有出現的字符串?

其次,我會避免通過瀏覽器來回傳遞部分有效的標記,因為返回給您時它可能會有所不同。 將所有替換項放回innerHTML之前,請先運行所有替換項。

let s = mark.innerHTML;
s = s.replace(/&lt;/g, '<')
s = s.replace(/&gt;/g, '>');
mark.innerHTML = s;

暫無
暫無

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

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