3

simples chrome 拡張機能を youtube (コンテンツ スクリプト) で動作させようとしていますが、正しく動作していないようです。

奇妙なことに、機能する場合もあれば、単純に機能しない場合もあります。

私の最終的な目標は、ビデオの URL でのみ機能するようにすることですが、その前に行き詰まりました。

私はもともと試しました:

"matches": [ "http://www.youtube.com/*" ]

まったく成功せず、奇妙だと思ったので、それが私の最初の質問だと思います。私が作成した別の拡張機能では、http://twitter.com/

いくつかの youtube 拡張機能のコードを読み、そのうちの 1 つを使用しました:

"matches": [ "*://*.youtube.com/*" ]

奇妙なことに、これは時々しか機能せず、いつ再現/理解できない. ページをリロードしても機能しませんが、一部の URL では機能します。

実際のスクリプトは、デバッグ用の必要最小限のスクリプトです。

$(window).load(function() {
    alert(2);
});

そのため、この一貫性のない動作についてはかなり混乱しています。

編集:

このURLのドンは機能しているようです:

これは次のことを行います:

編集2:

マニフェスト全体:

{
  "name": "__MSG_extname__",
  "version": "0.1",
  "default_locale": "en",
  "manifest_version": 2,
  "icons": {
    "16": "images/icon16.png",
    "48": "images/icon48.png",
    "128": "images/icon128.png" },
  "content_scripts":[
    {
    "matches": [ "*://*.youtube.com/*" ],
    "js": ["jquery.min.js", "script.js"]
    }
  ],
  "web_accessible_resources": ["images/down-arrow.png"]
}
4

1 に答える 1

1

全体に投稿またはリンクする必要がありますmanifest.jsonが、最も可能性の高い問題は$(window).load( ...です。
デフォルトでは、Chrome コンテンツ スクリプトは予測不可能なタイミングでwindow.onload起動します。

したがって、"run_at": "document_end"マニフェストに追加して、スクリプトが予測可能な時間に実行されることを保証しますwindow.onload

~~~
次に、他の拡張機能がそのアラートをブロックしている可能性があります。必要に応じて、他の拡張機能を確認して無効にします。

~~~
最後に、YouTube が AJAX 経由でいくつかのページをロードする可能性があります。AJAX で読み込まれたページは、コンテンツ スクリプトを再起動しません。AJAX が「新しい」ページをロードするケースを見つけた場合は、(1) ここにレシピをコメントしてください。(2)必要に応じて AJAX 対応の手法を使用してコードを再起動できます。(ディレクティブwaitForKeyElements.jsではなくマニフェストを介して追加されることに注意してください。)@require

于 2013-02-19T00:40:25.043 に答える