人気のあるブラウザーのインスタント拡張機能のレシピ

すべての(可能であれば)人気のあるブラウザー用の単純な拡張機能を作成するという問題が発生しました。 拡張機能のアクティビティは、ドキュメントの本文にJavaScriptを挿入することです。
医師がjavascript注射を処方
簡単に思えますが、ブラウザの行でコードを実行します。
javascript : var s = document. createElement ( 'script' ) ; s. type = 'text/javascript' ; document. body . appendChild ( s ) ; s. src = 'script.js' ; void ( 0 ) ;
javascript : var s = document. createElement ( 'script' ) ; s. type = 'text/javascript' ; document. body . appendChild ( s ) ; s. src = 'script.js' ; void ( 0 ) ;
javascript : var s = document. createElement ( 'script' ) ; s. type = 'text/javascript' ; document. body . appendChild ( s ) ; s. src = 'script.js' ; void ( 0 ) ;
javascript : var s = document. createElement ( 'script' ) ; s. type = 'text/javascript' ; document. body . appendChild ( s ) ; s. src = 'script.js' ; void ( 0 ) ;
javascript : var s = document. createElement ( 'script' ) ; s. type = 'text/javascript' ; document. body . appendChild ( s ) ; s. src = 'script.js' ; void ( 0 ) ;
しかし、スクリプトが別のサイトのすべてのページを処理する場合はどうでしょう。 新しいページに移行するたびに、ユーザーにインジェクションコードのタブを常にクリックさせないでください。 単純な解決策の素朴な検索は失敗しました。
- ページ上のすべてのリンクをインターセプトし、独自の「javascript:」コードを追加しました。もちろん、コードは開いているページの一部として実行され、(location.href)を介して新しい「クリーン」ページに移動しました。
- setTimeoutを使用したオプションは、一般にナンセンスの順序でした...新しいページの読み込みが開始された後、実行が落ちました。
多くのブラウザ用の拡張機能を書くのが一番怖かったのですが、どうしたらいいか、最も人気のあるものを思い出し始めました。
- IE 7+(6-kの場合、スコアを付けることにしました。ユーザーの少数のユーザーのために多くのコストがかかります-許してください)
- Firefox 1.5以降
- Chrome 4+
- Opera 9+(結果として、拡張機能はOpera 11に対してのみ記述できることが判明しました)
- Safari 3+
「FirefoxとChromeに問題はないはずです
」と私は思いました。
Google Chrome
Chromeの拡張機能は1時間で作成されました-公式サイトの多くのドキュメント、多くの例。 一般的に、開発者にとっての楽園です。
例と
ガイドbackground.htmlからのフラグメント
- 関数 onRequest ( tabId 、 changeInfo 、 tab ) {
- if ( changeInfo。status == 'complete' ) {
- クロム。 タブ 。 executeScript ( tabId 、 { code : "javascriptのないコード:" } ) ;
- } ;
- } ;
- クロム。 タブ 。 onUpdated 。 addListener ( onRequest ) ;
すべてがシンプルで上品になりました。 ドキュメント本文に直接挿入する
Source: https://habr.com/ru/post/J107953/
All Articles