0

デザインを制御できないページのコンテキストで機能する必要があるブックマークレットを書いています。使用フレーム(フレームセット)で機能するためにブックマークレットが必要なページがいくつかあります。jQuery-UIダイアログがフレーム内で機能することは可能ですか?

現在、フレームセットのあるページに遭遇すると、次のようなダイアログを作成します。

var frame = window.frames[0];
var div = $(frame.document.createElement("div"));
div.html("My popup contents");
div.dialog( ... );

その結果、jQueryはフレームのドキュメントではなくメインドキュメントにui-widgetdivを追加します。メインドキュメントは単なるフレームセットであるため、何も表示されません。jquery-ui APIに、ウィジェットを構築するドキュメントを指定するオプションが見つかりません。ブックマークレットは、外部ドキュメントのコンテキスト内から実行される(または少なくとも開始される)必要があります。

フレームの上にオーバーレイを表示できないことは承知しています。1つのフレームだけで表示できるので快適です。また、他のいくつかの注目すべきブックマークレットは、フレームセットのあるページでは機能しないため、これは一般的な問題である可能性があります。

提案?

4

2 に答える 2

0

私がやったことは次のとおりです。フレーム内またはフレーム上に表示しようとするのではなく、ブックマークレットでページを書き換えてフレームセットを削除し、自分の本文とコンテンツをページに追加しました。これにより、ブックマークレットはフレームセットを削除する前にフレームをイントロスペクトし、フレームセットからオーバーレイを構築するために必要なデータを取得できますが、オーバーレイは引き続き機能します。

このようなもの:

if (window.frames) {
    for (var i = 0; i < window.frames.length; i++) {
        // ... grab data from the frame ...
    }
}

if ($("frameset")) {
    $("html").children("frameset").remove();
    document.body = document.createElement("body");
    $("html").append(document.body);
    // ... add my stuff to body ...
}
于 2010-07-19T14:55:27.360 に答える
0

ブックマークレットは通常、jQueryを使用しません。ほとんどのブックマークレットは、jQueryを含むウィンドウを開きます。

于 2010-07-06T16:26:03.017 に答える