6


如果没有为 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://--Extension ID--/blank.gif
Firefox chrome://firebug/内容/空白.gif

或者: 是否有一种简单的方法来检查是否为 Chrome、Firefox 和 Opera 安装了扩展程序?

4

1 回答 1

4

如果扩展愿意合作,它可以很容易地在文档中宣传它的存在。例如:


扩展可以做

window.$$myExt = ...

然后您可以通过以下方式检测扩展名

if(typeOf $$myExt !== 'undefined'){...

(或其任何变体)

至少获取页面window有点棘手


扩展可以做

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();
于 2013-01-18T12:36:05.460 回答