各位好,我现在写了js想在页面渲染的时候替换指定id的p下面的iframe的地址,页面是别人的页面,我没有改写代码的权限,只有把js植入,然后替换,我发现随着我的轮询时间的调低,替换的准确率也在下降,当我调到20毫秒的时候基本是页面上没有被替换的了,我想知道这是为什么昵?谢谢各位了,代码如下:
function replaceAd(param){
var i=0;
var p_timer=setInterval(function(){
if(document.readyState==="complete")
clearInterval(p_timer);
var allps=document.getElementsByTagName("p");
(function(allp){
console.log(allp.length+"____"+i);
for (;i<allp.length; i++) {
var p=allp[i];
var id=p.id;
if(!id) continue;
for(var p in param){
var reg=eval("/"+p+"/gi");
if(reg.test(id)&&p.getElementsByTagName("iframe")[0]){
console.log(id)
var e=p.getElementsByTagName("iframe")[0];
e.src=param[p];
}
}
}
})(allps);
},200);
}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
iframe虽然内嵌在网页里,也是一个独立的页面,你更改了url,就好比一个正常页面发起了请求,请求链接开始,浏览器解析dns,连接查询到的ip,请求资源等,这一系列都需要时间,你自己在network面板里查看一下你发起的每个请求所消耗等待的时间,就比如说你设定的20ms,上述的那么多操作能在20ms内完成吗,如果浏览器还未完成请求你又更改了url,浏览器就会取消这次的请求转而请求下一次的,所以这一次的操作就失败了,之后的就都一样了