2012-03-30 12 views
5

Według this przewodnika Próbowałem załadować JQuery do mojego Firefox przedłużenia.jQuery.hoverIntent.js w rozszerzeniu Firefox nie ładuje

var Myext = { 

    loadJQuery: function(wnd) { 
     var loader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"] 
     .getService(Components.interfaces.mozIJSSubScriptLoader); 
     loader.loadSubScript("chrome://myext/content/jquery-1.7.2.min.js", wnd); 
     var jQuery = wnd.jQuery.noConflict(true); 
     try { 
     loader.loadSubScript("chrome://myext/content/jquery.hoverIntent.js", jQuery); 
     catch (Except) { 
     alert(Except.toString()); 
     } 
     return jQuery; 
    }, 

    onLoad: function(e) { 
    Myext.jQuery = Myext.loadJQuery(window); 
    }, 

    showDialog: function(e) { 
    var $ = Myext.jQuery; 
    /* JQuery code */ 
    } 

} 

window.addEventListener("load", function(e) { Myext.onLoad(e); }, false); 
window.addEventListener("DOMContentLoaded", function(e) { Myext.showDialog(e); }, false); 

Program ładujący ma problem z ładowaniem jquery.hoverIntent.js. Ściągnąłem go here

komunikat o błędzie: "Type Error: $ is undefined"

+0

jQuery.noConflict(); var doc = window.content.document; Alert (jQuery ("body", doc) .html()); –

Odpowiedz

1

Aby korzystać .dialog() trzeba to jQuery UI także bibliotekę. Połóż kolejną linię zaraz po załadowaniu biblioteki jQuery:

loader.loadSubScript("chrome://myext/content/jquery-ui-1.8.18.custom.min.js", wnd); 

Ostatni biblioteki jQuery UI można pobrać z here.

+0

Zrobiłem to, ale nadal nie widzę okna dialogowego. Skopiowałem tylko plik 'jquery-ui-1.8.18.custom.min.js' do katalogu' myext/content'. – xralf

+0

Wygląda na to, że nic z JQuery nie działa. Kiedy zastępuję funkcję dialogową funkcją '$ (" a "). Kliknij (funkcja() { alert (" Witaj świecie! "); });' Nie widzę komunikatu po kliknięciu łącza. – xralf

+0

Gdzie masz '

text
'? Powinien być częścią DOM strony html w zakładce. Prawdopodobnie musisz dodać coś więcej. jak '$ (" # dialog ", gBrowser.contentDocument) .dialog()' ... Sprawdź także Error Console ('Ctrl' +' Shift' + 'J') i nie zapomnij zrestartować Firefoksa po każdej zmianie zrobiony. – gakhov

0

Linia:

onLoad: function(e) { 
    Myext.jQuery = Myext.loadJQuery(window); 
    }, 

nie powinno być?

onLoad: function(e) { 
    Myext.jQuery = loadJQuery(window); 
    }, 
+0

Próbowałem, ale nie pomagałem. Myślę, że powinieneś odwoływać się do przestrzeni nazw. – xralf

Powiązane problemy