很早以前我写过一篇文章关于如何在Firefox开发修改当前页面的内容,但是那篇文章的适用场景在于修改当前页面的Tab下的内容,也就是说,如果你打开多个Tab,同时刷新,只有当前的HTML会被改变,好在那篇文章是讲解如何使用鼠标选择相应的范围更改相应的HTML,如果在那个需求下,则现在的这个就不适用了。
我现在就说说如何在Firefox里面修改多个Tab的页面内容吧。
首先在加载Firefox插件的时候,我们可以给每个Tab的对象加上DomContentLoaded事件响应,并且给真正响应的部分添加事件。
//在onload方法写入下面的事件
gBrowser.addEventListener("DOMContentLoaded",function(event)
{
//Firefox下面的appcontent
var appcontent = document.getElementById("appcontent");
//获得之后就可以为真正的响应部分添加事件
if(appcontent)
{
appcontent.addEventListener("DOMContentLoaded", function(event){pageLoad(event);}, true);
}
} , false);
在获得响应的响应事件之后,我们就需要在pageLoad方法中获取相应的Tab的document对象。这里值得一提的是,在Firefox的document对象中,默认是拿的XUL的document,而不是frame的document。虽然我们可以通过window.content.document或者content.document拿到对象,但是这个地方拿到的仅仅是当前窗口,也就是当前Tab的,如果我们要在所有的Tab加载完毕之后自动的更改内容,就需要拿到每一个document。
我们可以更改pageLoad代码如下。
function pageLoad(event)
{
var doc = event.originalTarget;
if(doc.nodeName != "#document" || !doc.location)
{
return;
}
//doc is document object
//doc.getElementById("someid")
//doc.appendChild(someChild)
}
通过上面的代码我们就拿到了每一个Tab的document对象,拿到之后,我们就可以在相应的方法中使用相应的document更改对应的Tab里的HTML了。
Firefox Addon
firefox, 扩展开发, 修改, 内容, 选择, selection, extension