function wait(w, id) {
while (w.document.getElementById(id) == null) {
console.log('waiting');
}
return true;
}
var openWindow = window.open("http://www.google.com/?gws_rd=ssl", width=200, height=400);
if (wait(openWindow, 'lst-ib')) {
openWindow.document.getElementById('lst-ib').value = "test";
}
我试图打开一个新窗口,然后在新窗口中找到一个id并更改该值。我只是用google进行测试,并且' lst-ib'是其上搜索栏的ID。
我知道wait()函数效率极低,不应该真正使用,但我是JS的新手并且找不到任何其他方式,但它没有&似乎是问题所在。
我尝试简单地设置值,但总会返回错误,说getElementById(...)为空
此外,
document.getElementById('lst-ib').value = "test";
每当进入控制台时都可以使用
答案 0 :(得分:0)
大多数浏览器不允许在其他浏览器中更改文档。 想象一下将改变银行页面上的帐号的脚本
答案 1 :(得分:0)
除非“origin”(协议,域和端口)相同,否则你应该阅读same origin policy不允许窗口访问另一个窗口内容的内容。
如果您的其他窗口是http://www.google.com
,并且您运行此代码的窗口不一样,那么浏览器只会阻止您的访问。它不会让你看到其他文件。
要完成跨窗口信息交换,您需要使用postMessage()
的两个合作窗口或两个具有相同原点的窗口。没有其他解决方法。
而且,是的,你应该永远不要使用这样的轮询循环。它将阻止该窗口的Javascript执行任何其他操作。如果您绝对必须反复轮询,那么您可以使用setTimeout()
或setInterval()
来检查,直到某些条件成立为止。这允许其他脚本在等待条件成为真时在该窗口中运行。