2013-01-18 40 views
5


我想顯示自定義欄(通知,如:安裝我們的插件)。在我們的網站如果分機不爲Chrome,Firefox和Opera安裝。如果安裝了擴展名,則不會顯示。JavaScript的檢查,如果瀏覽器擴展安裝了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/
歌劇院從未被提及。

有沒有辦法做到這一點歌劇的基礎上,檢查本地資源這是擴展的一部分的想法:
鉻擴展:// - 擴展條目 -/blank.gif
火狐瀏覽器://firebug/content/blank.gif

要不然: 有沒有一種簡單的方法來檢查,如果擴展安裝了Chrome瀏覽器,Firefox和Opera?

+1

這是很容易擴展是否願意合作 –

+0

或者,如果該分機留下可追溯的信息像一些獨特的元素或DOM屬性。 – nil

+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(); 
+0

那麼,這顯然是唯一一個可能的解決方案,因爲在Opera瀏覽器js無法檢查擴展名安裝。 我希望以後可以回寫詳細的解決方案。 – user1990249

+0

在擴展體系結構中的哪個位置會出現'window。$$ myExt = ...'去? – bgadoci

+0

@bgadoci只要它想要被檢測到。也就是說,儘可能快,因爲擴展檢測無法在擴展程序自己可見之前運行。 –

相關問題