无法操作通过chrome.tabs创建的新选项卡的DOM
Cannot Manipulate DOM of new tab created via chrome.tabs
以下是我所做的:
chrome.tabs.create({url:msg.url}, function(tab) {
chrome.tabs.executeScript(tab.id, {
runAt:"document_end",
allFrames:true,
code:"var ready = function(fn){ if(typeof fn!== 'function') return ; if(document.readyState === 'complete') {return fn();} if(document.readyState === 'interactive'){ return fun(); };}; ready(function() { console.log(document.querySelector('#rso h3 a')) alert('yes'); document.querySelector('#rso h3 a').click(); });"
});
});
但js似乎是在孤立的环境中运行的,所以我无法操作DOM,有什么解决办法吗?
我还尝试了code
属性只包含以下片段
document.querySelector('#rso h3 a').click();
PS:如果code
属性是,例如对alert()
函数的调用,那么它会完美地工作。
感谢@Xan和我们对该主题的讨论,通过使用具有code
属性的setInterval
和clearInterval
的组合解决了问题,如下所示:
code: "var intrvl = null; function fn(){ var a = document.querySelector('#rso h3 a'); if(a !== null){ clearInterval(intrvl); a.click(); } }; intrvl = setInterval(fn, 500);"
问题是,我试图注入这个javascript的特定页面已经创建了我想要动态操作的元素,而document_end
只能保证加载所有静态DOM,我必须采取这种解决方法。
另一种方法可以是在Javascript或原始MutationObserver
API中使用突变库。
相关文章:
- 通过js在新选项卡中有条件地打开url
- 新选项卡被弹出窗口阻止程序阻止
- 在新选项卡中打开链接,但不使用_blank方法
- 单击按钮即可在浏览器的新选项卡中打开 Sapui5 详细信息页面
- 在同一选项卡中启动下载,而无需在Javascript中打开新选项卡或窗口
- Javascript事件;在新选项卡中打开”;
- 在编译阶段后创建新的DOM树,或者继续使用原始修改的DOM
- jQuery-尝试附加每个要选择的新选项
- 使用Javascript从Drupal打开新选项卡
- 如何在新选项卡中而不是在新窗口中打开URL
- 如何禁用鼠标中键单击超链接以在新选项卡或新窗口中打开
- 如何在新选项卡中打开链接以及在当前选项卡中重定向
- 如何超链接在新选项卡中打开并携带一些变量的选择标记
- 在新选项卡中打开iframe源
- 如何防止iframe中的链接在新选项卡中打开
- 单击我网站中的链接时打开新选项卡,保持当前选项卡处于活动状态
- 打开除域之外在新选项卡中打开的所有外部链接
- 如何使用jQuery更改当前URL并在单击时打开新选项卡
- 在新选项卡中打开一个html并访问它's DOM元素
- 无法操作通过chrome.tabs创建的新选项卡的DOM