如何使用Kango框架在Firefox中收听DOCUMENT_COMPLETE事件?

时间:2013-11-13 20:48:38

标签: javascript cross-browser firefox-addon

我正在尝试使用Kango framework加载页面时执行操作。它适用于谷歌浏览器,但不适用于Mozilla Firefox:

extension_info.json:

{
"content_scripts": ["content_script.js"], 
"description": "Extension description", 
"creator": "Kango", 
"background_scripts": [
    "main.js"
], 
"homepage_url": "http://kangoextensions.com/", 
"version": "0.9.0", 
"browser_button": {
    "caption": "Kango", 
    "icon": "icons/button.png", 
    "tooltipText": "Kango"
}, 
"name": "MyExtension"
}

content_script.js

// ==UserScript==
// @name MyExtension
// @include http://*
// @include https://*
// ==/UserScript==

main.js:

function MyExtension() {
var self = this;

kango.ui.browserButton.addEventListener(kango.ui.browserButton.event.COMMAND, function() {
    self._onCommandClick();
});

kango.browser.addEventListener(kango.browser.event.DOCUMENT_COMPLETE, function(event) {
    alert('On document complete!');
    kango.console.log(event);
});
}

MyExtension.prototype = {
    _onCommandClick: function() {
        kango.browser.tabs.create({url: 'http://www.stackoverflow.com'});
    }
};

var extension = new MyExtension();

有人可以解释为什么它在Mozilla Firefox中不起作用,但在谷歌浏览器中有效吗?

我尝试了其他活动,例如'TAB_CHANGED'和'BEFORE_NAVIGATE',但它们也无法在Mozilla Firefox中使用。

谢谢! :)

[]的

1 个答案:

答案 0 :(得分:1)

我有类似的问题,但是事件被触发了

我的背景计数包含

main.js

var handleTabCreated = function (event){
   kango.console.log("Tab created directed to " + event.url);
   count++;
   requestTab = event.target;
  /*
   * Remove event listener
   */
   kango.browser.removeEventListener(kango.browser.event.DOCUMENT_COMPLETE  , handleTabCreated);
   result = requestTab.dispatchMessage('ParseData' , count);
   kango.console.log(result);   // Returns False and no message is sent to Tab
}    

kango.addMessageListener('Content2Background', function(event) {
   sourceTab = event.target;
   img = (event.data);
   kango.console.log('Received message from content ' + img);
   kango.browser.addEventListener(kango.browser.event.DOCUMENT_COMPLETE  , handleTabCreated)
   kango.browser.tabs.create({url:'www.pngine.com',focused:false});
}

在我的前台脚本中,我只触发调度消息以触发代码。

content.js

// ==UserScript==
// @name testitem
// @namespace content
// @include http://*
// @include https://*
// @require jquery-1.9.1.min.js
// ==/UserScript==

var $ = window.$.noConflict(true);
img = 'test';
kango.dispatchMessage('Content2Background', img );

适用于Chrome和Firefox。 firefox中唯一的问题是我无法向新创建的选项卡发送任何方法,但我可以在Chrome中执行此操作。

这是我项目代码的其余部分

{
"name": "Test item",
"version": "1.2.0",
"description": "Test item demo",
"creator": "Ahmed",
"homepage_url": "http://pngine.com/",
"background_scripts": ["jquery-1.9.1.min.js","main.js"],
"content_scripts": ["content.js"],
"browser_button": {
    "caption": "Test_item_demo",
    "tooltipText": "Test_item_demo",
    "icon": "icons/button.png"
},
"context_menu_item": {
    "caption": "Blog Verifier"
}
}

我希望它可以帮助您,并且我会尝试检查为什么我无法将msgs发送到创建的标签页。

最好的运气