2010-04-15 9 views

Odpowiedz

3

Cóż, na pewno byłoby to możliwe, jeśli wkleisz całą zawartość jQuery do pliku UserJS lub utworzysz osobny plik UserJS dla wszystkich stron z biblioteką jQuery. Istnieje jednak możliwość, że będzie on kolidował z dowolnymi stronami używającymi jQuery.

W zależności od wymagań, może mógłbyś przetasować swój własny mini-framework? Na przykład niektóre proste funkcje chwycić elementy wg tagu/klasy/ID:

function $id(id) { 
    return document.getElementById(id); 
} 

Uwaga: Można dostać lepszą reakcję na co Opera's forums.

+0

Dzięki, zadziałało. Jeszcze lepszym sposobem było zapisanie jquery w folderze userscripts opery, tak aby był uruchamiany na każdej stronie. Wtedy mógłbym po prostu użyć zwykłego $ (document) .ready (function() {w moim własnym pliku javascript użytkownika – RadiantHeart

+2

Jeśli skopiujesz jQuery do swojego folderu JS użytkownika, pamiętaj, że skrypty użytkownika działają w kolejności alfabetycznej, więc może nazywając to coś jak 0-jquery.js pomaga uruchomić go zanim wszystkie inne skrypty będą go potrzebować (Przynajmniej my (Opera) zaimplementowaliśmy alfabetyczne sortowanie plików skryptów użytkownika, nie wiemy, czy mamy do tego odpowiednie testy, więc nie mamy pojęcia, czy działa. Być może muszę to naprawić.) – hallvors

+0

Dobra wskazówka, dzięki. – RadiantHeart

0

Tylko dla kompletności:

Używam go regularnie z moim userJS. Wystarczy skopiować plik jquery.js do folderu userJS.

Wariant 1:

aby zapobiec jego konflikt z dostępnych jQuery, należy wybrać opcję noConflict obrębie jqueryfile i stowarzyszonej z jQuery z własnym identyfikatorem (jQueryMyIdentifier = jQuery; jQuery = null;). Twój kod JS może być owinięte

(function($) { 
    // normal jquery js based on, jQueryMyIdentifier 
    $('#bla').x(); 
})(jQueryMyIdentifier); 

Opcja 2:

odjazdu, jak obejmują zdalne js przy użyciu javascript. implementacja obejmująca linię do twojego JS.

include "http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" 

lub podobne.

8

Właśnie napisałem Operę userJS, którą przekształciłem z rozszerzenia Google Chrome, gdzie jQuery można było łatwo załadować, ale tutaj w Operze musiałem użyć innego rozwiązania, a chciałem wprowadzić minimalne zmiany w moim kodzie.

Po prostu dołączam nowy znacznik skryptu do nagłówka dokumentu z działającym źródłem jQuery. Zaczyna być pobierany ZANIM DOM jest gotowy.

To jest moje działające rozwiązanie, mam nadzieję, że pomaga!

// ==UserScript== 
// @name This is the name of my userJS 
// @description That's the description of my userJS 
// @include http://blahblah.hu/* 
// @include http://*.blahblah.hu/* 
// @match http://blahblah.hu/* 
// @match http://*.blahblah.hu/* 
// @version 1.0 
// ==/UserScript== 

(function() { 

    // include jQuery 
    var headID = document.getElementsByTagName("head")[0];   
    var newScript = document.createElement('script'); 
    newScript.type = 'text/javascript'; 
    newScript.id = 'myjQuery'; 
    newScript.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js'; 
    headID.appendChild(newScript); 

    window.addEventListener('load', function (e) { 

     // you can write your jQuery code now! 
     $('#yourElementId').css('background-color', 'yellow'); 

     // further jQuery codes 
     // ... 

    }, false); 

})(); 
Powiązane problemy