2012-03-01 32 views
1

我在應用程序中使用Web視圖,而不是打開Safari瀏覽器實例,因此我注意到Safari擴展不起作用。是否有可能在Cocoa應用程序中使用自定義的Web視圖時啓用此功能?如何在使用Web視圖時啓用Safari擴展

由我需要使用Safari擴展的原因是注入JavaScript的任何網頁在一個時刻被加載,所以如果有另一種方式來做到這一點,而無需使用擴展,歡迎任何建議或樣品。

+0

也許調用WebView的['stringByEvaluatingJavaScriptFromString:'](https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/WebKit/Classes/WebView_Class/Reference/Reference.html#//apple_ref/ occ/instm/WebView/stringByEvaluatingJavaScriptFromString :)從你的WebFrameLoadDelegate ['webView:didClearWindowObject:forFrame:'](https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/WebKit/Protocols/WebFrameLoadDelegate_Protocol/ Reference/Reference.html%23 // apple_ref/occ/instm/NSObject/webView:didClearWindowObject:forFrame :)可能就像是一個注入的「啓動腳本」。 – 2012-03-04 07:01:19

回答

1

有沒有辦法在Web視圖中使用Safari擴展。

如果你的腳本不是太大,那麼將它格式化爲「javascript:」小書籤並設置web視圖的位置呢?

[編輯:東西下面響應於提問者請求爲「更多關於該技術有點」加入。]

假設您要將頁面的背景顏色更改爲黃色,將所有文本更改爲紅色。要做到這一點的JavaScript會是這樣的:

document.body.style.backgroundColor = "yellow"; 
document.body.style.color = "red !important"; 

要打開腳本轉換爲書籤,您只需:

  1. 在一個匿名函數包裹它,
  2. 刪除所有換行符,
  3. (可選)刪除任何不必要的空格,
  4. URL編碼它,
  5. 和使用前綴與整個事情 「的javascript:」。

因此,例如將成爲:

javascript:(function(){document.body.style.backgroundColor%3D%22yellow%22%3B%0Adocument.body.style.color%3D%22red%20!important%22%3B%0A}()); 

然後你可以設置的WebView window.location該字符串爲「運行」的書籤。

Here is a page有自動腳本書籤轉換器,似乎工作。

+0

感謝您的回答。你能解釋一下這個技術嗎? – willyMon 2012-03-01 22:26:54

+0

看到我的編輯答案。 – canisbos 2012-03-03 00:37:07