我在浏览器中使用const w = window.open('www.example.com');
打开一个新标签,然后我使用let d = w.document;
获取DOM然后我转到另一个点击事件的网页:d.querySelector('a').click()
;新网页在同一窗口中打开,我想通过再次运行d = w.document
来抓取刚开始的页面的DOM。这就是我被卡住的地方。
我面向当前openend窗口的DOM,但是我得到了前一个窗口的DOM。当console.log(w)
(在.js本身不在控制台中),打开新网页时,我获得当前页面的window
对象,window.document
匹配openend的DOM页。但正如我在实际上所说的那样,当我在新页面上运行d = w.document
时,我得到了上一页的DOM。
以下代码是我使用的整个功能。旁注:我没有(/不能)使用window.document.onload
因为我不理解,但似乎我无法将函数附加到窗口onload事件。另外为了清楚我的代码是在ES6类中,所以我没有使用示例中的const
。
问题:
当我在新的openend网页上运行getDOM
方法时,它返回上一页的DOM。
async foo() {
await this.getDOM()
.then(w => this.d = w.document);
const x = this.d.querySelector('button.x');
console.log(send); //null
}
getDOM () {
return new Promise(resolve => {
const interval = setInterval(() => {
if (this.w.document.readyState === 'complete') {
clearInterval(interval);
resolve(this.w);
}
}, 500);
});
}
我希望有人可以提前帮助!