Если ваш кликабельный букмарклет сломался и вы хотите его вернуть, вы можете создать нажимаемую кнопку вместо этого, используя Пользовательские кнопки Расширение Firefox.
Преимущества кнопки перед запуском с Scratchpad:
- Вы можете сохранить букмарклет (кнопка),
- у вас может быть хороший собственный значок (создайте какое-нибудь изображение, например, файл PNG, импортируйте его и base64_encode в диалоге новой кнопки).
Расширение немного особенное, потому что кнопки работают на уровне хрома Firefox , поэтому они немного более привилегированы (вы можете взаимодействовать с API браузера), и нет однозначных соответствие между обычным JS и кодом кнопки ( требуется некоторая настройка ). Точнее, document
и window
, видимые с кнопки, не те, которые вы ожидали.
Однако вы можете назначить «хорошие» window
и document
для ваших переменных, а затем поработать над этими переменными (лучше не переопределять окно;)
Вот пример кода, который я написал, который очень хорошо работает в 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);
Вместо того, чтобы использовать глобальные функции напрямую (например, setTimeout
или alert
), вы должны поставить theWindow.
перед ними и заменить document
/ window
на локальные theDocument
/ theWindow
и Кажется, это работает. Однако я не проверил это тщательно с очень сложными случаями.
Чтобы добавить кнопку, щелкните правой кнопкой мыши по любой кнопке, которая у вас есть, и выберите «Добавить новую кнопку ...».