2012-03-01 5 views
1

Safari拡張機能が動作しないことに気付いたので、Safariブラウザインスタンスを開く代わりに、アプリケーションでWebビューを使用しています。 CocoaアプリケーションでカスタムWebビューを使用しているときにこの機能を有効にする可能性はありますか?Webビューを使用するときにSafari拡張機能を有効にする方法

Safari拡張機能を使用する必要があるのは、一度に読み込まれるWebページにjavascriptを挿入することです。拡張機能を使用しないで別の方法があれば、提案やサンプルを歓迎します。

+0

WebViewの['stringByEvaluatingJavaScriptFromString:'](https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/WebKit/Classes/WebView_Class/Reference/Reference.html#//apple_ref/)を呼び出している可能性があります。あなたのWebFrameLoadDelegateの['webView:didClearWindowObject:forFrame:'](https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/WebKit/Protocols/WebFrameLoadDelegate_Protocol/)から、「/ occmount/instm/WebView/stringByEvaluatingJavaScriptFromString :)」を選択します。 Reference/Reference.html%23 // apple_ref/occ/instm/NSObject/webView:didClearWindowObject:forFrame :)は、注入された "開始スクリプト"のようになります。 –

答えて

1

WebビューでSafari拡張機能を使用する方法はありません。

スクリプトのサイズが大きすぎない場合は、「javascript:」ブックマークレットとしてフォーマットし、ウェブビューの場所を設定するのはどうですか?

[編集:質問者の要求に応じて以下の内容を追加しました。

ページの背景色を黄色に、すべてのテキストを赤色に変更したいとします。それを行うにはJavascriptを何かのようになります:

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

はブックマークレットにスクリプトを有効にするには、あなただけ:

  1. 匿名関数で包み、
  2. 削除すべての改行、
  3. (オプション)、それをURLエンコード
  4. と "javascript:" 形式で全部の接頭辞
  5. 、不要なスペースを削除してください。

ので、例はなる:

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

+0

私の編集した答えを見てください。 – canisbos

関連する問題