2

ユーザーがアドオンウィジェットをクリックしたときに、ロードされたページでこれを実現したいと思います:

var e = jQuery.Event("keydown", { keyCode: 405 }); 
$("input").trigger(e);

jQuery は既にターゲット ページに読み込まれています。私はこれを試しました:

var widgets = require("widget");
var tabs = require("tabs");
var pageMod = require("page-mod");

var widget = widgets.Widget({
    id: "button-test",
    label: "button-test",
    contentURL: "http://www.mozilla.org/favicon.ico",
    onClick: function() {
        tabs.activeTab.attach({
            contentScript:
                'var e = window.jQuery.Event("keydown", { keyCode: 405 }); $("input").trigger(e);'
        });
    }
});

コンソールに次のエラーが表示されます。

Timestamp: 30/08/2012 14:06:36
Error: An exception occurred.
Traceback (most recent call last):
  File "javascript:var e = window.jQuery.Event("keydown", { keyCode: 405 }); $("input").trigger(e);", line 1, in 
TypeError: window.jQuery is undefined

postMessage または port.emit() は必要ですか? 私;また、jQuery.eventだけを試しました(ウィンドウなし)

4

2 に答える 2

1

jQuery は既にターゲット ページに読み込まれています。

はい、Web ページからアクセスできます。ただし、セキュリティ上の理由から、コンテンツ スクリプトはウェブページに直接アクセスできません。jQuery (およびページで定義されたその他の JavaScript 変数) にアクセスできますunsafeWindow.jQueryが、これには深刻なセキュリティ上の影響があるため、使用することはお勧めしません。あなたの場合、jQuery の独自のコピーを拡張機能に追加し、それをコンテンツ スクリプトと共にロードする方がよいでしょう。そうすれば、jQuery がそこにあり、期待どおりに動作することを確認できます。

var {data} = require("self");
tabs.activeTab.attach({
    contentScriptFile: [data.url("jquery.js"), data.url("contentScript.js")]
});
于 2012-08-31T07:55:28.147 に答える
0

これは私のために働いたものです:

var widgets = require("widget");
var tabs = require("tabs");
var data = require("self").data;

var widget = widgets.Widget({
    id: "div-show",
    label: "Show divs",
    contentURL: "http://www.mozilla.org/favicon.ico",
    onClick: function() {
        tabs.activeTab.attach({
            contentScriptFile:
                [data.url("jquery-1.8.0.min.js")],
            contentScript: [
                "$(window).keydown(function(e){ \
                console.log(e.keyCode);}); $(window).trigger(jQuery.Event('keydown', { keyCode: 405 })) "]

        });
    }
});

ウィジェット アイコンをクリックすると、キーダウン イベントが生成され、ログに記録されます

于 2012-08-31T13:19:46.373 に答える