1

asp.net Webフォームがあります。フォームには、ユーザーが入力するフィールドがいくつかあります。モーダル ウィンドウを開くハイパーリンクがあります (私は jquery と prettyphoto を使用していますが、 http: //www.ericmmartin.com/projects/simplemodal/ に切り替えることができます。これは、彼のドキュメントの方が優れているためです) 。

モーダル ウィンドウには、ユーザーが選択を行ってレコードを保存する iFrame が含まれています。

この時点で、そのウィンドウを閉じて、親ページでポストバックをトリガーする必要があります。

現在、最後のページにターゲット = 親および href = 親ページの URL であるハイパーリンクがあります。次に、それを自動クリックするJavaScriptがあります。私はそれが安いハックであることを知っています。その後、ユーザーを親ページに戻しますが、ページがリロードされ、元のデータはすべて失われます。これが問題です。

これを行う最善の方法は何ですか?

ありがとう!

4

2 に答える 2

2

親ウィンドウと子 iframe が同じドメインにある場合、これは非常に簡単です。

iframe の内側ではwindow.parent外側のwindowオブジェクトを参照し、外側のページではそれ自体を参照します。

https://developer.mozilla.org/en/DOM/window.parent

したがって、iframe では、次の行に沿ってコードを記述できます。

// Check to make sure we're an iframe
if (window.parent !== window) {
  // Run an arbitrary function in the parent window
  var daddy = window.parent;
  daddy.doStuffThatSubmitsAFormInTheParentPage();
}
// Make sure you have that function defined in the parent page.

以下はjsbinでのアクセス例です。愛を見るにはコンソールが必要です。

http://jsbin.com/ucisi/5

きれいにしたい場合の関連コード

http://jsbin.com/ucisi/5/edit

http://jsbin.com/ucisi/4/edit

于 2010-01-29T23:31:44.913 に答える
0

アレックスのソリューションで、これを解決できました。

親ページには、次のものがあります。

<script language="JavaScript">
<!--
    function clickPostBackButton() {
        document.getElementById("<%=PostBackButton.ClientID%>").click();
    }
-->
</script>

<asp:Button CssClass="hide" CausesValidation="false" runat="server" Text="Postback" ID="PostBackButton" />

次に、モーダル ウィンドウに読み込まれる iFrame で。ボタン付きのフォームがあります。ボタンは、ユーザーを別のページに移動します。このページには、次のコードがあります。

<script language="javascript" type="text/javascript">
    // Check to make sure we're an iframe
if (window.parent !== window) {
  // Run an arbitrary function in the parent window
  var daddy = window.parent;
  daddy.clickPostBackButton();
}
// Make sure you have that function defined in the parent page.

</script>

この時点で、モーダル ウィンドウが閉じられ、親ページでポストバックがトリガーされます。ボタンに CausesValidation="false" があることに注意することが重要です。これがないと、ページに検証の問題がありました。ヒントをありがとう アレックス・セクストン

于 2010-02-01T15:47:35.210 に答える