2017-08-30 28 views
0

有一个网页,通过将html代码嵌入到另一个html代码中,当我尝试用它们的符号等价物替换实体时,它将删除所有内容。Tampermonkey,Chrome,如何将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/

+0

您可以告诉问题是否存在于替换调用或分配给innerHTML? –

+0

当我尝试用其他文本替换它时,它工作正常。 –

回答

1

首先,你只替换第一次出现,并不是所有出现。

> '&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>" 

How to replace all occurrences of a string in JavaScript?

其次,我会避免往返部分有效标记通过浏览器,因为它可能是不一样的,当它还是回到你身边。在将其放回到innerHTML中之前,运行所有替换项。

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

它大部分工作,但加载非中断空格和+号后出现 和+,我不能用相同的方式替换它们。 –

+0

没关系,不得不单独更换&签字,谢谢你的帮助。 –

相关问题