【问题标题】:BrowserAction.onClicked Wait for iframe to LoadBrowserAction.onClicked 等待 iframe 加载
【发布时间】:2016-05-03 01:01:28
【问题描述】:

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

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

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

ma​​nifest.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"});
});

scroll.js

window.addEventListener("load", scroll, false);

function scroll (evt) {
    window.scrollTo(0, 800);
}

【问题讨论】:

标签: javascript iframe google-chrome-extension


【解决方案1】:

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

逻辑应该是:

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

document.readyState 履行职责:

function scroll(evt) {
  window.scrollTo(0, 800);
}

if (document.readyState === "complete") {
  scroll();
} else {
  window.addEventListener("load", scroll, false);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 2019-12-19
    • 2013-08-31
    • 2010-12-28
    • 2020-09-22
    • 1970-01-01
    • 2014-01-02
    相关资源
    最近更新 更多