Javascript 从网页检测我自己的Firefox扩展

Javascript 从网页检测我自己的Firefox扩展,javascript,firefox-addon,detection,Javascript,Firefox Addon,Detection,我试图找到一种简单的方法来检测我的扩展是否安装在Firefox 3.6中。这应该从网页上完成,可能使用javascript 我读过很多博客,上面说我应该尝试从我的扩展加载一个图像。因为我拥有这个扩展,而且我可以编写代码,所以这似乎是一个不必要的攻击 我还考虑过为web文档设置一个全局变量,但我还没能做到这一点。我想我可以写: top.window.content.document.hasMyPlugin=true 但这似乎不起作用(hasMyPlugin未定义)。我只在访问我的域时添加这个变量(

我试图找到一种简单的方法来检测我的扩展是否安装在Firefox 3.6中。这应该从网页上完成,可能使用javascript

我读过很多博客,上面说我应该尝试从我的扩展加载一个图像。因为我拥有这个扩展,而且我可以编写代码,所以这似乎是一个不必要的攻击

我还考虑过为web文档设置一个全局变量,但我还没能做到这一点。我想我可以写:

top.window.content.document.hasMyPlugin=true

但这似乎不起作用(hasMyPlugin未定义)。我只在访问我的域时添加这个变量(我添加了一个WebProgressListener并检查了主机属性),所以全局名称空间污染应该不是问题

有什么想法吗

更新


我尝试访问变量的方式是
if(hasMyPlugin)
if(document.hasMyPlugin)
。。。也许我访问它的方式不对?

一个简单的方法是让扩展对用户定义的事件做出反应。您的网页将事件分派到适当的事件目标上(如果没有更好的,您可以使用文档),然后扩展的事件侦听器可以验证网页地址并执行操作。事件侦听器至少可以对事件调用preventDefault();然后,网页可以调用getPreventDefault()来查看扩展是否存在。

请参见此处:

您是否能够让插件改变页面DOM?如果您能够做到这一点,那么您肯定可以检测页面上JavaScript代码的效果。但是,要注意顺序:确保无论你的页面做什么来检测插件,都是在插件进行更改之后发生的@非常感谢。不,我没有,但我没有任何理由-我的插件没有做任何类似的事情。我只是想知道上面的代码是否有问题,是否应该这样工作,或者不应该。然后我可以继续对排序进行故障排除。通过“修改DOM”,我的意思是向
标记添加一个“class”值。然后,您可以在页面上的JavaScript代码中检查它。@我最好不要以这种方式污染DOM,肯定有一种“更干净”的方式来检测我拥有的扩展?当然,它仍然会“污染”DOM,但您可以设置页面内变量“hasMyPlugin”通过在文档中插入
标记来定义它。嘿,谢谢。这听起来是个很棒的方法。。。是否可以将eventhandler添加到所有文档中,或者我需要在每个新网页上重新附加eventhandler?@Max只需将您的事件处理程序添加到chrome;活动开始了,谢谢!这并没有告诉我一切,但它让我走上了正确的道路,你的评论对我的理解非常有用。