有沒有通過JavaScript檢測Safari擴展是否已安裝的方法? https://extensions.apple.com有一些做法,因爲如果已經安裝了擴展,它們會將安裝鏈接更新爲「已安裝」。但是,我無法弄清楚他們是如何做到的。我追查回型「SafariExtensionGalleryController」的對象,但是這是據我得到的。檢測是否安裝了Safari擴展
難道蘋果把特殊的鉤子到推廣體系只爲自己的東西??
失落......
THX,喬爾
有沒有通過JavaScript檢測Safari擴展是否已安裝的方法? https://extensions.apple.com有一些做法,因爲如果已經安裝了擴展,它們會將安裝鏈接更新爲「已安裝」。但是,我無法弄清楚他們是如何做到的。我追查回型「SafariExtensionGalleryController」的對象,但是這是據我得到的。檢測是否安裝了Safari擴展
難道蘋果把特殊的鉤子到推廣體系只爲自己的東西??
失落......
THX,喬爾
如果您是擴展的作者,那麼你就可以檢測是否安裝了自己的擴展。我簡單地注入一種無形的串到我的網站,我再掃描時頁面加載。如果字符串已被注入,我的擴展必須安裝,然後你可以做任何你喜歡的結果。
identifier.js
if (window.top === window)
{
//detect if the extension has been installed and disable "Install" button if that's the case
if (document.title === "YOUR PAGE TITLE") //we don't want to inject the string into any website, just ours
{
var p = document.createElement("noscript");
var texto = document.createTextNode("Extension Installed");
p.appendChild(texto);
document.body.appendChild(p);
}
}
我懷疑蘋果做到這一點編程方式使用Safari瀏覽器用來顯示網站的網頁視圖,然後運行JavaScript腳本的內部是變化取決於擴展的擴展網站在Safari的代碼返回。
希望這會有所幫助!
而不是使用'document.title'來確定當前網頁是否在您的網站上,請使用'document.URL'。任何網頁都可以將其標題設置爲任何內容。 – breakingobstacles
要檢測您的擴展服務器端,最簡單的方法是使用內容腳本在您的域中注入會話cookie。
在Chrome和Firefox中,您可以注入HTTP標頭,但Safari中的API不允許使用它。
Cookie的問題:如果您的用戶卸載擴展程序,您只有在他的會話結束時纔會注意到(關閉瀏覽器)。
當我轉到該頁面時,即使安裝了擴展程序,安裝鏈接也不會更改。 – dan8394
你是對的......暫時。當我上週訪問擴展程序的網址時,官方擴展程序(即一鍵安裝的擴展程序)的鏈接已更新,說明已安裝它們的鏈接。現在,沒有任何擴展程序似乎是正式的,因爲它們需要三次安裝。我的猜測是,這是暫時的,但在蘋果的網站上。 – JayRu