Jeśli twoja klikalna bookmarklet została zerwana i chcesz ją odzyskać, możesz utworzyć przycisk klikalny zamiast tego używając rozszerzenia przeglądarki Firefox Custom Buttons.
Zalety przycisk nad systemem z Brudnopisie:
- rzeczywiście można Zapisz bookmarkletu (przycisk),
- można mieć piękny własną ikonę (tworzenie jakiś obraz np PNG , zaimportuj go i base64_encode w nowym oknie dialogowym przycisku).
Rozszerzenie jest nieco szczególny, ponieważ przyciski uruchamiane w Firefoksie chrom poziomie, więc są one nieco bardziej uprzywilejowany (można wchodzić w interakcje z API przeglądarki), a nie ma korespondencja 1-do-1 pomiędzy normalnym JS a kodem przycisku (potrzebuje kilku poprawek). Dokładniej, document
i window
widziane z przycisku nie są tymi, których oczekiwałeś.
Jednak można przypisać „dobre” window
i document
do zmiennych, a następnie pracować na tych zmiennych zamiast (lepiej nie przedefiniować okna;)
Oto przykładowy kod napisałem który działa całkiem dobrze w FX10 :
// get proper 'window' and 'document' into our private variables
var theWindow = window.top.getBrowser().selectedBrowser.contentWindow;
var theDocument = theWindow.document;
// here we go
var input = theDocument.getElementById("foo");
input.focus(); // just to show you it's working, unnecessary in fact
// simulate keyboard event
var evt = theDocument.createEvent("KeyboardEvent");
evt.initKeyEvent ("keypress", true, true, theWindow ,
0, 0, 0, 0, 0, 65); // 65 == "A"
input.dispatchEvent(evt);
// show alert after 2 sec
theWindow.setTimeout(function(){
input.value += "B";
theWindow.alert(input.value); // alerts "AB"
},2000);
Zamiast używać funkcji globalnych bezpośrednio (jak setTimeout
lub alert
), trzeba umieścić theWindow.
przed nimi, i zastąpić document
/window
z lokalnym theDocument
/theWindow
i wygląda na to, że działa. Nie testowałem go jednak dokładnie w bardzo skomplikowanych przypadkach.
Aby dodać przycisk, kliknij prawym przyciskiem myszy na przycisk, który już masz i wybierz "Dodaj nowy przycisk ...".
Jak to zrobić? – Ryan
@Ryan: Robiąc dokładnie to, co zrobiłeś z moją odpowiedzią: Zaakceptuj odpowiedź, która pomogła ci najbardziej. Powinieneś wrócić do starszych pytań i zrobić to. –