2009-06-27 5 views
1

私は現在、iframeを離れる前に実行する必要があるいくつかのチェックボックスがあるメインページ内にiframeを持っています。つまり、ユーザーがチェックボックスのチェックを開始し、メインページ、すなわち、iframeを残して、私は彼らがiframeを残していることをトラップ/検証することができるようにしたいと言って、これを示すメッセージを表示すると、 "注:あなたはここに入力されたすべてのデータを失うでしょう - /いいえ? "タイプメッセージ。iFrame検証

ヘルプ/ウェブサイトがあれば幸いです。

ありがとうございました。 トニー。

答えて

1

Prompting a User to Save When Leaving a Page。この4guysの記事は、必要なもののように聞こえる。それはonbeforeunloadイベントについて語ります。 onbeforeunloadについてもstackoverflowにいくつかの素晴らしいのpostsがここにあります。


これまでのところ、iframeで実際にiframeが起動しないようです。バグ!

ここでは動作するはずのサンプルコードを示します。これは同じドメインにいる場合にのみ有効です。そうでない場合は、same origin policyはiframeが親とやりとりするのを防ぎます。

私はYMMVのように多くのブラウザでこれらをテストしていません。

ここでは、変更ロジックのプロンプトをどこに配置するかによって、2つのオプションがあります。

オプション1には、変更があったときに親ウィンドウに通知するiframeが関係します。

親ウィンドウのjavascript:

window.onbeforeunload=closeIt; 
    var changes = false; 
    function closeIt() 
    { 
     if (changes) 
     { 
      return "Yo, changes, save 'em?"; 
     } 
    } 
    function somethingChanged() { 
     changes=true; 
    }; 

のiframeのjavascript:

:2はjavascriptの親ウィンドウのonbeforeunload

親ウィンドウの制御を取るのiframeを必要とする

$(function() { 
     $('input').change(parent.somethingChanged); 
    }); 

オプション

のiframe javascriptの:-)何もありません:ナイーブchanges変数はおそらくがありますかどうかを確認するために、4guys記事からの技術を使用して、ビットを強化しすることができいずれかのオプションで

$(function() { 
     parent.window.onbeforeunload = myCloseIt; 
     $('input').change(somethingChanged); 
    }); 
    var changes = false; 
    function myCloseIt() 
    { 
     if (changes) 
     { 
      return "Yo, changes, save 'em?"; 
     } 
    } 
    function somethingChanged() { 
     changes=true; 
    }; 

は、本当にが変更されました。彼らは異なるドメインにしているが、あなたはHTMLの「両面」の担当に残っている場合は


、彼らは困難だ、まだいくつかのオプションがあります。

xssinterfaceは、postMessageと場所ハッシュと秘密のブードーブラックマジックを使用してクロスサイトを通信するライブラリです。

+0

おかげでダン - これはiframeでうまくいくと思っていますか? – tonyf

+0

チェックボックスを取得するために、iframeに到達するなど、いくつかの改造が必要になるかもしれませんが、コンセプトはまだ成立しています。あなたが問題を抱えている場合は、私はサンプルを –

+0

ダン、私はそれがiframeレベルでは、親だけで発射することはできません残念ながら働くことができるかどうかを確認します。 iframeレベルでトラップするためにいくつかのサンプルコードで正しい方向に私を指すことができれば感謝します - ありがとう。 – tonyf

関連する問題