1

jQueryを使用してFirefoxプラグインを開発しています。ページロードリスナーを追加し、その関数内にjQueryjavascriptファイルをロードしました。

   onPageLoad: function(aEvent) {
        var doc = aEvent.originalTarget; // doc is document that triggered the event
        var win = document.defaultView; // win is the window for the doc

        var jsLoader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"].getService(Components.interfaces.mozIJSSubScriptLoader);
        jsLoader.loadSubScript("chrome://myExt/content/jquery-1.8.0.js");

jQueryのロードにエラーはありません。しかし、jQueryを使用してDOMを変更したり、DOM検索などを実行しようとすると、失敗します。

if($("#id1").length>0) // length is always 0
// do something

var x  = document.getElementById("id1"); //plain old javascript and it works

私はjavascriptを使用してすべてをうまく行うことができます。ただし、jQueryで同じことを行うと、エラーなしで失敗します。ここで何がうまくいかないのでしょうか?

ありがとう。

4

1 に答える 1

2

これに対する解決策を見つけました。jQuery の読み込みは問題なく、DOM 関連以外の機能を問題なく実行できます。しかし、$関数を変更する必要があるため、DOM では何もできません。

$ = function(selector,context) {
return new jQuery.fn.init(selector,context||doc);
};

ここで、「doc」はドキュメントです。この変更を行った後、すべてが適切に機能しました。

@everone、コメントありがとうございます。私は以前の応答を見ませんでした。そうでなければ、喜んで返事をしたでしょう。

  • サイレシュ
于 2012-12-03T11:23:18.303 に答える