1

我正在尝试在使用Kango 框架完成页面加载时执行一个操作。它适用于 Google Chrome,但不适用于 Mozilla Firefox:

扩展信息.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==

主.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 中不起作用,但在 Google Chrome 中起作用?

我尝试过其他事件,例如“TAB_CHANGED”和“BEFORE_NAVIGATE”,但它们在 Mozilla Firefox 中也不起作用。

谢谢!:)

[]的

4

1 回答 1

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});
}

在我的前台脚本中,我只触发发送消息来触发代码。

内容.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"
}
}

我希望它对您有所帮助,我会尝试检查为什么我无法将消息发送到创建的选项卡。

祝你好运

于 2013-12-09T12:23:36.353 回答