2012-09-24 97 views
1

我正在開發一個使用jQuery的firefox插件。我添加了一個頁面加載監聽器,並在該函數中加載jQuery JavaScript文件。firefox jQuery失敗,javascript工程

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沒有錯誤。但是,當我試圖修改DOM使用jQuery或作出任何DOM搜索等,它失敗

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

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

我能夠做到用javascript就好了一切。但是,與jQuery一樣,沒有任何錯誤就會失敗。有什麼想法可能在這裏出錯?

謝謝。

+1

你肯定jQuery庫被加載? –

+0

如果你沒有任何錯誤$命名空間是正確的,所以任何已經加載,爲什麼你使用該mozilla機制來加載jQuery庫? – Kalamarico

+0

一個jsFiddle在這裏會很有幫助,如果你能讓它重現你的問題。 –

回答

2

我找到了解決方案。 jQuery加載是很好的,並且能夠做到沒有任何問題的非DOM相關函數。但是,$由於功能需要修改而無法執行任何操作。

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

這裏「doc」是文檔。做這個改變後,一切都落空了。

@但是,感謝您的意見。我之前沒有看到答覆。如果沒有,我會很樂意回覆。

  • Sailesh