5

疑似非同期フォーム送信を処理するために空のフレームを使用しています。この手法に慣れていない方のために説明すると、フォームの URI がフレーム内で解決され、ユーザー エクスペリエンスが中断されないようnameに、フォームの属性でフレームの属性を参照することをお勧めします。targetaction

ユーザーにフィードバックするには、スクリプトを使用してフォームのloadまたはerrorイベントをリッスンする必要があります。これにより、実質的に UX 全体がスクリプトに依存するようになるため、フレームを挿入し、スクリプトを介してフォームのターゲット参照を追加するだけです。

問題は、フレームがページに挿入されるとすぐにロード イベントをトリガーすることです:デフォルトの動作

jQuery のoneメソッドとe.stopImmediatePropagation()(こちら) を使用してこれを軽減するか、フレームを挿入してからイベントバインドします (こちら)。しかし、これらのオプションはどちらも直感に反するものです。間違いのように見えないように、コードにはコメントが必要です。

TL;DR: そもそも iframe を変更または修飾して、挿入時に誤ったロード イベントを発生させないようにする方法はありますか?

私が試したこと

  1. src属性なし
  2. srcに設定しabout:blankます(上記は暗黙的です)
  3. srcに設定#
  4. srcに設定javascript:void 0
  5. src空のデータ URI に設定data:text/plain;base64,;
  6. srcdoc空または空に近い文字列に設定
4

1 に答える 1

0

最初に iframe をドキュメントに入れ、次にリスナーを登録します。

var e = $('<iframe>');
e.appendTo('body');
e.on('load', function(){
  alert('Loaded!')
});
于 2013-03-29T14:31:55.213 に答える