JavaScript检查是否为Chrome,Firefox和Opera安装了浏览器扩展程序

时间:2013-01-18 12:02:22

标签: javascript firefox opera


我想在我们的网站上显示自定义栏(通知如:安装我们的插件。)如果未安装扩展程序,则适用于Chrome,Firefox和Opera。如果安装了扩展程序,则无显示。

想法是
1.用户访问我们的网站,并显示一条带有消息的栏 - “嘿,安装我们的扩展程序” 2.安装用户点击安装和扩展。用户无需打开它 3.用户再次访问我们的网站,并且在安装扩展程序后,该栏不会再次出现 我们只讨论安装检查,而不是cookie

到目前为止,我只能为Chrome找到解决方案:http://blog.kotowicz.net/2012/02/intro-to-chrome-addons-hacking.html
和Firefox:http://webdevwonders.com/detecting-firefox-add-ons/
Opera从未被提及。

基于检查作为扩展的一部分的本地资源的想法,有没有办法为Opera做到这一点:
chrome-extension:// - 扩展名ID - / blank.gif
Firefox chrome://firebug/content/blank.gif

否则: 是否有一种简单的方法可以检查Chrome,Firefox和Opera是否已安装扩展程序?

1 个答案:

答案 0 :(得分:4)

如果扩展程序愿意合作,它可以轻松地向文档广告其存在。例如:


<击> 扩展可以

window.$$myExt = ...

然后您可以通过

检测扩展名
if(typeOf $$myExt !== 'undefined'){...

(或其任何变体)

获取网页windowsomewhat tricky at least


扩展程序可以

document.body.classList.add("myExt-visited")

然后你可以通过

检测扩展名
if(document.body.classList.contains("myExt-visited")){...

扩展程序可以

document.body.innerHTML += "<div id='myExt-toolbar'>..."
// or $('body').append("<div id='myExt-toolbar'>...");

然后你可以通过

检测扩展名
if(document.getElementByID("myExt-toolbar")){...
// or if($("#myExt-toolbar").length){...

或者,你可以做

<div id="myExt-replacement">
   ...

并且扩展名会

var replacement = document.getElementByID("myExt-replacement");
replacement && replacement.remove();

或者你可以做到

function onMyExtExists(){
  ...
}

并且扩展名会

onMyExtExists && onMyExtExists();