2010-11-30 63 views
0

我需要找出一種方法來專門爲Mac上的Safari安裝插件。如果我將.plugin文件複製到Internet Plug-ins文件夾中,它們在運行時也會被Firefox和Google Chrome檢測到。如何在瀏覽器註冊之前在NPAPI插件中檢測到UserAgent?

爲了防止出現這種情況,我使用NP_UserAgent API調用來確定用戶代理,如果它不是Safari,請退出。但是,插件仍由Google Chrome和Firefox註冊。無論如何在沒有瀏覽器註冊插件的情況下做同樣的事情?

回答

2

如果您正在編寫一個NPAPI插件,它應該可以在任何瀏覽器中工作。你能解釋爲什麼你試圖阻止運行其他瀏覽器的用戶使用插件嗎?根據潛在的需要,可能會有更好的方法。 (例如,如果這要與Safari擴展一起使用,那麼您所需要做的就是讓您的擴展使用只有您的插件處理的MIME類型,然後其他瀏覽器是否檢測到該插件並不重要,因爲它將永遠不會被實例化)。

你想只瞄準只有 Safari或任何使用Apple WebKit框架的瀏覽器?如果是後者,你可以寫一個WebKit plugin而不是NPAPI插件。

+0

謝謝@smorgan ...認爲這是我將如何前進。是的,你的猜測是絕對正確的......插件與Safari擴展一起工作。它實際上是Firefox和Chrome的現有擴展,我試圖將它移植到Safari。是的,如果你喜歡它:) http://www.cloudmagic.com/ – themoondothshine 2010-12-02 04:37:02

0

其中一種可能的解決方案是使用JavaScript檢測瀏覽器,並且僅在Safari中爲<object>標籤插入HTML頁面。但是,當然,這並不妨礙插件的註冊。

另一種方法是爲Safari編寫WebKit插件。它比NPAPI更容易實現。