問題タブ [content-script]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - ページのJavascriptが実行された後にコンテンツスクリプトをロードするにはどうすればよいですか?
私の拡張機能は、挿入されたページがすでに完全にロードされた後にのみ、コンテンツスクリプトsearchTopic.jsをロードすることになっています(はい、拡張機能マニフェストで「run_at」を「document_end」に設定しました)が、実際には以前にロードされていますすべてのDOMオブジェクトが作成されました(重要なオブジェクトは、ページ内のJavascriptを介して作成されます)。したがって、問題は、ページのJavascriptが実行されるまでどのように待つことができるかということです。これが私のマニフェストです:
google-chrome-extension - コンテンツスクリプトを介したコードインジェクションが削除されます
Flashコンテンツを示すタグの上に画像を描画するChrome拡張機能を作成しています。「contentscript.js」ファイルにコンテンツスクリプトを記述しました。このファイルは、スクリプトタグを介して別のスクリプトファイル「backgroundscript.js」をページの本文に挿入するだけです。
このコードは、Flashビデオがあるいくつかのサイトで機能し、Flash Playerウィンドウのすぐ上に画像を表示しますが、他のサイトでは表示されません。また、ほんの一瞬で表示されてから消える場合もあります。
以下は私のマニフェストファイルです:
また、「デバッガ」を挿入して確認しました。スクリプトに挿入し、コンソールを介してコードの実行を監視します。スクリプトは少なくとも1回はページ本文に追加されます。画像ボタンが表示されていない場合でも。
これは、ボタンが表示されないより高度なサイトに実装されている、ある種のanit-XSSコントロールですか?
私は過去数週間からこれを乗り越えようとして成功しなかったので、本当にあなたの助けに感謝します:(
編集:
以下のコンテンツスクリプトを参照してください。
対象サイト:
- ボタンは表示されません:http ://www.metacafe.com
- しばらくの間ボタンを表示します:http ://www.dailymotion.com
- ボタンを正しく表示します:http ://www.myreviewalarm.com
backgroundscript.jsのコンテンツをご覧ください。
javascript - Chrome拡張機能で指定された文字/キーコードを使用してキーボードイベントを初期化するにはどうすればよいですか?
ウェブページのキーボードイベントをシミュレートするGoogleChrome拡張機能を開発しています。
このWebkitのバグevent.initKeyboardEvent()
が原因で正しく機能しないことがわかりました 。また、いくつかの回避策も見つかりました。たとえば、SO Question
ただし、拡張機能のコンテンツスクリプトには独自の「パラレルワールド」があり、コンテンツスクリプトで定義されたプロパティはWebページスクリプトに表示されないため、イベントオブジェクトのプロパティの定義は機能しません。
DOM4イベントコンストラクターがGoogleChromeで機能し、コンストラクターを介してキーボードイベントを適切に初期化できることを願っています。
残念ながら、次のように失敗します。
Chromeでサポートされているイベントコンストラクターに関するドキュメントが見つかりませんでした。誰かが私にいくつかのドキュメント/ソースコードを教えてもらえますか?
Google Chrome拡張機能でキーボードイベントをシミュレートする他の方法はありますか?
keydown
(注:多くの実際のコントロールは/keyup
具体的にリッスンするため、TextEventは役に立ちません)
javascript - content_scriptから外部サイトにリクエストするにはどうすればよいですか
Gmailにポップアップを表示して、外部サーバーからの情報(今日の天気など)を含むChrome拡張機能を作成しようとしています。
私が試したこと
- Chrome拡張機能にjsを含めようとしましたが、サーバーに対してAJAX呼び出しを行おうとすると、同一生成元ポリシーに違反します。そのため、そのオプションは機能しませんでした。
- そこで、jsファイルをサーバーに保持し、ページの読み込み時に読み込んでみました。
私のmanifest.jsonは次のようになります:
コンテンツスクリプトを外部URLから含めることはできないことを他の場所で読んだので、これは機能しないと思います。ここでの正しいアプローチは何ですか。Gmailで実行され、サーバーから情報を要求できるjavascriptコードを作成するにはどうすればよいですか?たとえば、Smartrはどのようにそれを行いますか?
google-chrome - 動的 html iframe 内のコンテンツ スクリプトとクロム関数の操作
サーバーからhtmlコンテンツを取得し、ページ内にiframeを作成し、htmlを内部に挿入するchrome拡張機能を開発しています。したがって、「src」属性はありません。そのため、コンテンツ スクリプトは挿入されません。
manifest.js :
background.js :
frame.js :
ツールバー.js :
現在、iframe は、履歴の消去などのブラウザー関連の機能があるツールバーをホストしています。これらの関数には chrome.history と chrome.management への chrome-extension アクセスが必要なので、html オブジェクトと親拡張機能の間でメッセージを配信する必要があります。
問題は、src がローカル ファイルに設定されている場合でも、iframe に frame.js スクリプトが挿入されないことです。多分私は何か間違ったことをしているのかもしれませんが、スクリプトを挿入する方法が見つかりません。スクリプトを挿入することでそのようなメカニズムが可能になるかどうかさえわかりません。
スクリプトの相対 URL (chrome.tab.getURL) を取得しようとしましたが、スクリプトは実際に挿入されましたが、console.log(chrome) には拡張オブジェクトや使用できるメソッドが表示されませんでした (原因は手動注射)
どう思いますか?
google-chrome - include_matchesを書き直すことにより、プログラムによる注入なしでexclude_matchesバグを回避するにはどうすればよいですか?
Chrome拡張機能を構築していますが、CSSで失敗するChromeのバグが原因で問題が発生しています。プログラマティックインジェクションを使用してバイパスする方法があることは知っていますが、これはパフォーマンスに問題を引き起こしているので、除外したいものが含まれないような方法でexclude_matches
自分を書き直す方法を誰かが考えられるかどうか疑問に思います。include_matches
(一致しないものは自動的に除外されるため)。ロングショットですが、誰かがそれを行うことができれば、彼らはここにいるだろうと私は考えました!作業の例は次のコードです。
明らかに上記は上のリンクをカバーしていますが、URLがルールに適合しないようexample.com
に書き直す方法があるかどうか知りたいのですが、のようなURLはまだ機能します。example.com/z/
example.com/z/s/
基本的に許可されないURLは上記の形式( " /z/
")のURLだけなので、その位置にスラッシュが付いたURLを許可しないように指定する方法があるのではないかと思いました。当たり前のように、正規表現を考えすぎたと思いますので、よろしくお願いします!
これを入力しても、PIで立ち往生する可能性があると感じますが、試してみる価値はあります。
javascript - Javascript が Chrome 拡張機能で常に機能するとは限りません。いつ実行すればよいですか?
CSS と Javascript の両方をページに挿入する Chrome 拡張機能があります。動作しないことで、対処しなければならないものが存在する前に実行されていると思います。
Javascript は単純にdiv
別のものを使用して移動してinsertBefore
いますが、これは常に発生しているわけではありません。読み込み中のためだと思います。
私のマニフェストは現在:
スムーズに動作するように見えたので(動作する場合)、現在にrun_at
設定したdocument_end
ので、それを変更する必要があると思います。
誰かに何か提案があれば、大歓迎です。
編集:この質問への回答に関するフォローアップの質問がここに追加されました。この質問に追加すると、他の人にとって役立つかもしれないと感じました。
javascript - JavaScriptを使用してGmailヘッダーにXヘッダーフィールドを追加するにはどうすればよいですか?
Gmail上に構築され、メッセージが送信される前にメールヘッダーにいくつかの独自のヘッダーフィールドを追加する必要があるChrome拡張機能を書いています。私のアプリロジックは次のようになります。ユーザーがGmailでメッセージを作成し、[送信]ボタンを押した後、コンテンツスクリプトのコードがClickイベントをインターセプトし、ヘッダーフィールドを作成します。だから私の質問は、新しいフィールドを挿入できるメールヘッダーにアクセスするにはどうすればよいですか?JavaMailとAndroidでMessage.setHeader()のようなものを探しています。
javascript - waitForKeyElements(); - Chrome 拡張機能のポップアップで実行されるスクリプトを停止しますか?
この質問は、新しい投稿を求める必要があり、正当化された別の質問の続きです。そのため、他の質問を読まないと明確でない可能性があることを参照する場合は、申し訳ありません.
ユーティリティwaitForKeyElements()div
を使用すると、同じ URL 内に含まれる小さなポップアップ内に a が含まれるという問題に直面しています。私の拡張機能は現在Twitterサイトで実行されています。私の意図はdiv
、プロファイル ページ (例: http://twitter.com/todayshow ) に含まれる がページ上の別div
のページの上に移動されることです。waitForKeyElements()
このユーティリティを使用することで解決される読み込みの問題があるため、これを行っています。
ただし、プロフィール ページで、別のユーザー名へのリンクをクリックすると、小さなウィンドウ (同じウィンドウ/タブ内、同じ URL 内) がポップアップし、そのユーザーに関する情報といくつかの以前のツイートが表示されます。ここでの問題は、同じものdiv
がこのポップアップに表示され、ポップアップ ウィンドウの背後にあるメイン ページに移動することです。false
プロファイル ページでは、パラメータを に接続することでこれを停止できますが、waitForKeyElements()
プロファイル以外のページでは、このポップアップを有効にしてメイン ページに移動することは可能ですdiv
。プロファイル ページがまだここに存在するため、明らかな問題が発生します。
Chrome のバグにより、これらのページを除外できなくなったため、これを回避する方法があるかどうか疑問に思っています。これまでのところ(ブレインストーミングのみ)私は考えています:
div
そもそも存在しないページでは、空のものを作成しfalse
て問題を処理します。- どうにかして、スクリプトが特定の URL で起動するのを止めます。ただし、Twitter の仕組みにより、これを監視する必要が
OnClick()
あり、ページの URL (私はそう思います) を行う方法がわかりません。 - ポップアップが表示されたら実行を停止しますが、どこから始めればよいかほとんどわかりません。
どんな助けでも大歓迎です。この質問に関連する必要なコードは、最初の 2 つのリンクで見つけることができます。私が直面している問題は、Twitter に簡単にアクセスして確認できます。
編集:パラメーターをプラグインするとfalse
、URL バーを介してプロファイルに直接移動するときに機能します。プロファイルにいて、リンクを使用してプロファイルにアクセスすると、スクリプトが挿入されず、拡張機能が失敗します。したがって、これも解決するか、別の方法を使用する必要があります。
background - 拡張機能のバックグラウンドまたはポップアップからコンテンツスクリプトへのsendMessageが機能しない
さまざまな方法で繰り返し質問されていることは知っていますが、私はすべての答えを調べようとしましたが(うまくいけば、誰も見逃していませんでした)、どれもうまくいきませんでした。
これが私の拡張機能のコードです:
マニフェスト:
contextMenus.js
openDialog.js
バックグラウンドページの2つのアラートは機能しますが、content_scriptの1つは機能しません。
コンソールログのメッセージ:ポートエラー:接続を確立できませんでした。受信側は存在しません。
私のせいはどこですか?