如何从Addon SDK向选项卡对象添加进度侦听器 [英] How to add a Progress Listener to a tab object from Addon SDK

查看:119
本文介绍了如何从Addon SDK向选项卡对象添加进度侦听器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想获取URL更改通知(而不是加载通知). 有 API ,但我不知道该怎么做可以在插件SDK 的上下文中使用,该选项卡用于处理以自己的方式.

I'd like to get URL change notification (not load ones). There is an API, but I don't understand how to use in context of Addon SDK, which treats tabs in its own way.

  1. 如何将侦听器安装到"SDK"选项卡?
  2. 如何转换 nsiDOMWindow 进度对象到SDK标签?
  1. How to install a listener to an SDK tab?
  2. How to convert nsiDOMWindow from a progress object to SDK tab?

相关:

推荐答案

要安装侦听器,请使用viewFor将SDK选项卡转换为其原始(旧)表示形式. 使用modelFor和getTabForContentWindow可以向后转换.

To install a listener, convert SDK tab to its raw (old) representation using viewFor. Backward conversion is possible with modelFor and 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);
});

灵感来自 转换为Chrome窗口

这篇关于如何从Addon SDK向选项卡对象添加进度侦听器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆