gpt4 book ai didi

javascript - 使用 document.body.innerHTML.replace 有多安全?

转载 作者:数据小太阳 更新时间:2023-10-29 05:59:28 25 4
gpt4 key购买 nike

正在运行类似:

document.body.innerHTML = document.body.innerHTML.replace('旧值', '新值')

危险吗?

我担心某些浏览器可能会搞砸整个页面,并且由于这是将放置在我无法控制的站点上的 JS 代码,谁知道哪些浏览器可能会访问我有点担心.

我的目标只是在整个 body 中寻找一个字符串的出现并替换它。

最佳答案

绝对有潜在危险 - 特别是如果您的 HTML 代码很复杂,或者如果它是其他人的 HTML 代码(即它是 CMS 或您创建可重用的 javascript)。此外,它还会销毁您在页面元素上设置的所有事件监听器。

用 XPath 找到文本节点,然后直接对其进行替换。

像这样的东西(根本没有测试过):

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');
}

其中 xpath() 是一个自定义的跨浏览器 xpath 函数:

function xpath(str){
if(document.evaluate){
return document.evaluate(str,document,null,6,null);
}else{
return document.selectNodes(str);
}
}

关于javascript - 使用 document.body.innerHTML.replace 有多安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3320486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com