javascript - 如何从 Addon SDK 将进度监听器添加到选项卡对象

标签 javascript firefox-addon-sdk

我想收到 URL 更改通知(不是加载通知)。 有 an API , 但我不明白如何在 Addon SDK 的上下文中使用,处理标签 in its own way .

  1. 如何为 SDK 选项卡安装监听器?
  2. 如何转换nsiDOMWindow来自 a progress object到 SDK 选项卡?

相关:

最佳答案

要安装监听器,请使用 viewFor 将 SDK 选项卡转换为其原始(旧)表示。 可以使用 modelFor 和 getTabForContentWindow 进行反向转换。

const tabs = require("sdk/tabs");
const {viewFor} = require('sdk/view/core');
const {modelFor} = require('sdk/model/core');
const {getBrowserForTab, getTabForContentWindow} = require("sdk/tabs/utils");
const {Ci, Cu} = require("chrome");
Cu.import("resource://gre/modules/XPCOMUtils.jsm", this);

var progressListener = {
QueryInterface: XPCOMUtils.generateQI([Ci.nsIWebProgressListener, Ci.nsISupportsWeakReference]),
    onLocationChange: function(aProgress, aRequest, aURI) {
        var highLevel= modelFor(getTabForContentWindow(aProgress.DOMWindow));
        console.log("onLocationChange ", highLevel.url);
    }
};

tabs.on('open', function(newTab) {
    var lowLevel = viewFor(newTab);
    var browser = getBrowserForTab(lowLevel);
    browser.addProgressListener(progressListener);
});

灵感来自 Converting to chrome windows

关于javascript - 如何从 Addon SDK 将进度监听器添加到选项卡对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29326754/

相关文章:

javascript - 在 Ajax xhr 响应上使用 jQuery.filter 和 jQuery.find 时的不同结果

javascript - 是否有 element.innerHTML 分配的回调?

javascript - 允许跨域通信时使用Javascript获取远程文件的内容

javascript - 为什么Firefox插件中的console.log无法输出消息?

javascript - 相对div内的CSS响应绝对div

javascript - 针对 ngFor 变量的 Angular2 ngModel

javascript - 如何从特定索引中获取数字?

firefox-addon - Thunderbird 扩展控制台日志记录

javascript - 如何为 "Unresolved function or method"修复 WebStorm 警告 "require"(Firefox 附加 SDK)

Firefox 插件下载.jsm