正在运行类似的东西:
document.body.innerHTML = document.body.innerHTML.replace('旧值', '新值')
危险的?
我担心某些浏览器可能会搞乱整个页面,而且由于这是 JS 代码,这些代码将被放置在我无法控制的网站上,谁可能会被谁知道什么浏览器访问,我有点担心。
我的目标只是在整个身体中寻找字符串的出现并替换它。
绝对有潜在危险 - 特别是如果您的 HTML 代码很复杂,或者是其他人的 HTML 代码(即它是 CMS 或您创建的可重用 JavaScript)。此外,它还会销毁您在页面元素上设置的任何事件侦听器。
用XPath找到text-node,然后直接对其进行替换。
像这样的东西(根本没有测试过):
var i=0, ii, matches=xpath('//*[contains(text(),"old value")]/text()');
ii=matches.snapshotLength||matches.length;
for(;i<ii;++i){
var el=matches.snapshotItem(i)||matches[i];
el.wholeText.replace('old value','new value');
}
Where xpath()
是一个自定义的跨浏览器 xpath 函数,大致如下:
function xpath(str){
if(document.evaluate){
return document.evaluate(str,document,null,6,null);
}else{
return document.selectNodes(str);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)