Javascript GetElementById在新窗口上返回null
我试图打开一个新窗口,在新窗口中找到一个id并更改值。我刚刚使用谷歌进行测试,“lst ib”是它上面搜索栏的id 我知道wait()函数效率非常低,不应该真正使用它,但我对JS是新手,找不到其他方法,但这似乎不是问题所在 我试图简单地设置该值,但这总是会返回一个错误,即getElementById(…)为null 而且Javascript GetElementById在新窗口上返回null,javascript,getelementbyid,window.open,Javascript,Getelementbyid,Window.open,我试图打开一个新窗口,在新窗口中找到一个id并更改值。我刚刚使用谷歌进行测试,“lst ib”是它上面搜索栏的id 我知道wait()函数效率非常低,不应该真正使用它,但我对JS是新手,找不到其他方法,但这似乎不是问题所在 我试图简单地设置该值,但这总是会返回一个错误,即getElementById(…)为null 而且 只要进入控制台,大多数浏览器都不允许更改其他浏览器料堆中的文档。 想象一下,一个脚本将更改您银行页面上的账号,您应该了解到,该脚本不允许一个窗口访问另一个窗口的内容,除非“来源
只要进入控制台,大多数浏览器都不允许更改其他浏览器料堆中的文档。 想象一下,一个脚本将更改您银行页面上的账号,您应该了解到,该脚本不允许一个窗口访问另一个窗口的内容,除非“来源”(协议、域和端口)相同 如果您的另一个窗口是
http://www.google.com
并且运行此代码的窗口不同,那么浏览器将简单地阻止您的访问。它不会让您看到其他文档的内部
要完成跨窗口的信息交换,您需要使用postMessage()
的两个协作窗口或两个具有相同来源的窗口。没有其他解决办法
是的,你是正确的,你不应该使用这样的轮询循环。它将阻止该窗口的Javascript执行任何其他操作。如果绝对必须重复轮询,则可以使用setTimeout()
或setInterval()
反复检查,直到某个条件为真。这允许其他脚本在该窗口中运行,同时等待条件变为真
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";
}
document.getElementById('lst-ib').value = "test";