BrowserAction.onClicked等待iframe加载

BrowserAction.onClicked Wait for iframe to Load

本文关键字:加载 iframe 等待 onClicked BrowserAction      更新时间:2023-09-26

我想单击扩展的浏览器操作,然后在滚动之前加载iframe。window.addeventlistener("load", scroll, false);现在似乎是个问题。

我知道内容脚本会让window.addEventListener工作,但内容脚本也会一直注入脚本,我只想在点击浏览器动作图标时滚动。

我也知道删除window.addeventlistener("load", scroll, false);可以使滚动工作,但这不会等到iframe加载后。请帮忙。

manifest.json

{
 "manifest_version": 2,
 "name": "scroll",
 "description": "scroll",
 "version": "1.0",
 "browser_action": {
   "default_icon": {
     }
 },
 "background": {
   "scripts" : ["background.js"],
   "persistent" : false
 },
 "permissions": [
   "tabs", "<all_urls>"
 ]
}

background.js

chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.executeScript(null, {file: "scroll.js"});
});

滚动.js

window.addEventListener("load", scroll, false);
function scroll (evt) {
    window.scrollTo(0, 800);
}

您的代码可能执行得太晚(在load事件之后)。

逻辑应该是:

  • 检查页面是否已加载
    • 如果是,立即执行
    • 否则,请附加侦听器

document.readyState履行职责:

function scroll(evt) {
  window.scrollTo(0, 800);
}
if (document.readyState === "complete") {
  scroll();
} else {
  window.addEventListener("load", scroll, false);
}