17

メインページ内に iframe があります。iframe ページ内に modalpopup があります。したがって、modalpopup が表示される場合、modalpopup の親は iframe 本体とメイン ページの親本体です。したがって、オーバーレイはページ全体ではなく、iframe のみをカバーします。

jQueryを使用して、modalpopupをiframeから親windows body要素(または親body内の他の要素)に移動しようとしました。無効な引数エラーが発生します。

iframe 内のページから modalpopup を表示するにはどうすればよいですか? ドキュメント全体、親ドキュメントもカバーする必要がありますか?

アップデート:

同じ動作を実現することに関心のあるユーザーはほとんどいないため、回避策は次のとおりです。

私が提案する最善の回避策は、メインページに modalpopup を配置し、iframe から呼び出して、次のように言うことです。

/* function in the main(parent) page */
var _onMyModalPopupHide = null;
function pageLoad(){
    // would be called by ScriptManager when page loads
    // add the callback that will be called when the modalpopup is closed
    $find('MyModalPopupBehaviorID').add_hidden(onMyModalPopupHide);
}
// will be invoked from the iframe to show the popup
function ShowMyModalPopup(callback) {
    _onMyModalPopupHide = callback;
    $find('MyModalPopupBehaviorID').show();
}
/* this function would be called when the modal popup is closed */
function onMyModalPopupHide(){
    if (typeof(_onMyModalPopupHide) === "function") {
        // fire the callback function
        _onMyModalPopupHide.call(this);
    }
}

/* functions in the page loaded in the iframe */
function ShowPopup(){
    if(typeof(window.parent.ShowMyModalPopup) === "function") {
        window.parent.ShowMyModalPopup.apply(this, [OnPopupClosed]);
    }
}
// will be invoked from the parent page .. after the popup is closed
function OnPopupClosed(){
    // do something after the modal popup is closed
}

それが役に立てば幸い

4

4 に答える 4

1

単にスクロール可能なコンテンツのために iframe を使用している場合は、代わりに、overflow: autoまたはscrollを使用してスタイルを設定した div を検討してください。

このように設定すると、ページ内にそれぞれのウィンドウ スペースを持つ複数のドキュメントを操作する必要がないため、ページ全体の外観を簡単に変更できます。クロスフレーム通信の一部をバイパスすることができ、必要に応じて情報の同期を維持する方が簡単な場合があります。

これはすべての状況に適しているわけではなく、iframe に別のドキュメントをロードするだけでなく、div コンテンツを変更するために ajax (または javascript で dom を変更) が必要になる場合があります。また、Android Froyo ビルドなどの一部の古いモバイル ブラウザーは、スクロール可能な div を適切に処理しません。

于 2011-09-12T23:33:34.447 に答える
0

あなたが求めている方法では不可能です。このように考えてください: iframe は別のウィンドウです。(当分の間) ある Web ページの div を別の Web ページに移動することはできません。

于 2011-10-01T17:52:46.520 に答える
0

あなたはあなたの更新であなた自身の質問に答えました。モーダル ダイアログは、親ページに存在し、iframe から呼び出される必要があります。他の唯一のオプションは、iframe の代わりにスクロール div を使用することです。

于 2011-09-22T15:55:12.453 に答える