2010-12-09 59 views
3

我找不到比Blocking Unwanted Content section of this.Safari浏览器插件beforeload事件文档

其他的“beforeload”事件是什么,我专门找任何文档事件消息的结构。从上面的文档我知道有一个“event.url”成员,但没有其他的。从一段源代码我知道还有一个“event.target.nodeName”成员。但我没有比这更多的东西。

我迷失在WebKit文档和w3事件文档中。我在哪里可以找到一些关于“beforeload”事件的简单参考文档?

回答

3

事件消息(SafariExtensionMessageEvent实例)只有namemessageclass documentation)。它实际上在same page上进行了讨论。

有趣的是,事件类(SafariEvent)文档没有提及url属性或方法,因此要么传递不同类的对象或者发生其他事情。

像你一样,我发现苹果的文档充其量就是想要的。为了编写我想要写的小扩展,我不得不拼凑来自文档中各个位置的信息。如果你想知道你是否是唯一一个必须努力工作才能完成相对简单的任务的人......你不是。 :-)

+0

感谢您的同情。在我提到的示例文档的清单11-3中使用了“url”属性。我猜测它是一个继承的属性,但我在Safari文档中找不到类层次结构图。 – mjhm 2010-12-09 14:45:17

4

DOM beforeload事件是一个WebKit概念,它并不特定于Safari扩展。它确实有一个URL属性。

有关beforeload事件的一些信息 - 你可以看到:

http://opensource.apple.com/source/WebCore/WebCore-1298/dom/BeforeLoadEvent.idl

如果您在扩展内容脚本中使用此,一个方式来获得一些更多的信息,关于是有一些代码像:

document.addEventListener("beforeload", beforeLoadHandler, false); 

function beforeLoadHandler(event) 
{ 
    console.log(event); 
} 

然后使用Web Inspector来查看有关事件的信息(你可以看到它的网址,你可以看看事件目标,等等)。

1

的例子应该设置捕获参数为“真” ,当从页面内容使用时不是'假'。我不确定这将如何影响它在扩展中的使用,但是人们直接从页面内容中使用它并使用它来重写页面。在这种情况下你需要捕获。