Я пытаюсь манипулировать HTML-страницей страницы с помощью моего расширения и jQuery.
В этом простом тесте я пытаюсь сначала загрузить jQuery, а затем заменить все h1
на "Hello", например: $("h1").html("Hello");
См. Этот jsfiddle: http://jsfiddle.net/37vxJ/ (минус часть jQuery :)
var myExtension = {
init: function() {
// The event can be DOMContentLoaded, pageshow, pagehide, load or unload.
if(gBrowser) gBrowser.addEventListener("DOMContentLoaded", this.onPageLoad, false);
},
onPageLoad: function(aEvent) {
var doc = aEvent.originalTarget; // doc is document that triggered the event
setTimeout(function(){
//alert("page is loaded \n" +doc.location.href);
$("h1").html("Hello");
}, 1000);
}
}
window.addEventListener("load", function load(event) {
//remove listener, no longer needed
window.removeEventListener("load", load, false);
myExtension.init();
},false);
Как я могу сделать эту работу?
Если я раскомментирую: //alert("page is loaded \n" +doc.location.href);
Расширение распечатает URL (через 1 секунду)
Вы пытаетесь использовать jQuery в неправильном контексте.
+ Изменить
$("h1").html("Hello");
в
doc.defaultView.wrappedJSObject.$("h1").html("Hello");
Используйте firebug
. это лучшее для меня.
Вы можете найти его здесь: https://addons.mozilla.org/fr/firefox/addon/firebug/
ОБНОВИТЬ:
Существует мощная услуга, например, есть обратная инженерия для проверки DOM: просто нажмите на синюю стрелку (упоминается на рисунке), введите мышь на свой элемент, и вы получите синхронизацию между графическим интерфейсом и DOM.
Современные версии Firefox встроены в консоли, Inspector, Debugger, Profile и Network tracking. Просто нажмите Menu-> Разработчик и выберите нужный инструмент.
В качестве альтернативы используйте Firebug, как рекомендовано в другом ответе.
DOMContentLoaded
запускается до события onload объекта окна. Теперь не уверены, что вы ищете, но проверьте, соответствует ли это вашим потребностям: jsfiddle.net/37vxJ/1