-1

フレームベースの Web ページがあり、次のようになっているとします。

+-------------+---------------------------------------------------------+
|             |           header                                        |
|             +---------------------------------------------------------+
|             |                                                         |
|             |                                                         |
|             |                                                         |
|             |                                                         |
|             |                                                         |
|             |           main                                          |
| menu        |                                                         |
|             |                                                         |
|             |                                                         |
|             |                                                         |
|             |                                                         |
|             |                                                         |
|             |                                                         |
|             |                                                         |
|             |                                                         |
|             |                                                         |
|             +---------------------------------------------------------+
|             |           footer                                        |
+-------------+---------------------------------------------------------+

ご覧のとおり、 という名前のフレームがありmainます。ユーザーがフレーム内のメニュー項目をクリックするとmenu、任意のページ (任意の URL) をmainフレームにロードできます。今私が欲しいのは、mainフレームにロードされたページでコードを実行することです。先ほど説明したように、フレームに読み込まれるページにはmainURL パターンがないため、greasemonkeyスクリプトでパターンを指定することはできません。それを行う方法はありますか?

ありがとう。

4

1 に答える 1

0

質問は明確ではありません。次のような昔ながらの (そして HTML5 では廃止された) フレームセットを意味する場合:

<frameset ...>
    <frame name="header" src="header.htm"           ></frame>
    <frame name="menu"   src="menu.htm"             ></frame>
    <frame name="main"   src="ANY_DOMAIN/page.htm"  ></frame>
    <frame name="footer" src="footer.htm"           ></frame>
</frameset>

の場合、Greasemonkey スクリプトを、「メイン」フレームで開く可能性のあるすべてのページで起動するように設定する必要があります。

これを行う1つの方法は次のとおりです。

// ==UserScript==
// @name     _Fire on any page, but only when it is the frame named "main"
// @include  *
// ==/UserScript==

//-- Run in (i)framed page only, not in parent page.
if (window.top != window.self) {
    if (window.name == "main") {

        // PLACE YOUR DESIRED CODE HERE.
    }
}

重要:

  1. @include *最後の手段としてのみ使用してください。「main」という名前のフレームにロードされると予想されるページでのみ実行されるように、、、およびステートメントを可能な限り調整@includeします@exclude@match
  2. これらのフレームがすべて同じドメインである場合、より多くのオプションがあります。フレームセット ページを実行して、必要に応じてフレームにコードを挿入するだけです。そのために新しい質問を開きます。
  3. Firefox で、バージョン 4.01 の DOCTYPE でテスト済み。他のブラウザと HTML5 では、異なるか不可能な場合があります。
于 2013-09-30T07:15:23.230 に答える