我有一些代码可以打开这样的辅助窗口:
var win2 = window.open('second.html', 'secondary', 'width=1024, height=576');
然后我需要在dom中添加元素,所以我最初尝试了一些简单的事情:
var canvas = win2.document.createElement('canvas');
win2.document.appendChild(canvas);
但无论我尝试什么,窗口都不会改变。 我还尝试过其他修改,例如更改某些div或其他内容。
奇怪的是,如果我做console.log(win2.document);
,我可以在控制台中看到我的修改就在那里。就像它创建了一个没有反映在实际页面中的dom的克隆。
有没有办法修改我的第二个窗口的dom呢?
PS:我是同一个起源,所以这不应该是同源政策问题,虽然我在localhost
工作,是否有例外?
答案 0 :(得分:0)
好吧没关系,所以我读到了在访问它之前你应该等待它加载的事实。
我添加了setTimeout
30毫秒来测试,但它没有工作,所以我认为这不是问题。
我实际上需要更长的超时,然后才能工作。
所以,为了更正确的代码(而不是超时)
win2.addEventListener('load', function () {
callback();
});
但是,如果您重新加载父页面,事件似乎不会被触发。我还没有解决方案。