2012-02-22 8 views
0

私は、不可欠なJavascriptライブラリを引き出す必要があるウェブページを作成していますが、組み込みクラスのプロトタイプを変更することによって他のコードも分解します。私はそれをiframeでサンドボックス化し、2人の間で協力的なデータ共有を設定しました。iframeが読み込まれた後にbody.onloadが常に呼び出されますか?

iframeのbody.onloadが起動すると、私のコードによって親ドキュメントが変更されます。理論的には、親または子のbody.onloadが最初に起動するかどうかに関係なく、このコードは正しいでしょう。実際には、Webサーバーに人工的な遅延を挿入してもiframeが常に親の前にロードされるように見えるため、コードパスをテストすることはできません。

親機は、子ドキュメントがロードされた後にのみ常にonloadを発生させることが保証されていますか?これはFirefoxの単なるクルークですか?

もし私がこのテストケースを与えてくれない場合は、sleep(5)child.phpに子供が後で読み込まれるようにするにはどうすればよいでしょうか?

最後に、子供はJavascriptがそのJavaScript環境を変更したときに、これは、親フレームとは別であることが保証、またははそれが仕事になるのFirefoxのこの単なる気まぐれですか?

携帯性が重要です。ありがとう。

+0

睡眠は決して競合状態の解答ではありません。それはゾンビを埋めるようなものです。遅くなるだけですが、再浮上します。 – JohnFx

+0

「スリープ」は純粋に***です。私は競合状態を適切に解決しましたが、コードカバレッジを取得できません。 – spraff

答えて

0

あなたにとってポータビリティが重要な場合は、納得させることも重要です。投稿全体を読む(iframeを扱う、sleepなど)、あなたの全体のコンセプトは、不器用で不合理に聞こえます。

しかし、あなたに私はdocument.body.onload約100%わからないんだけど、あなたはwindow.onloadにバインドされたすべてのハンドラが結局、アイフレームがロードされた発火することを確認することができます質問に答えるために、それは非常に非常にクロスブラウザの互換性があります。また、iframeがそれ自身のDOMを持つ "サンドボックス"環境であるという事実は、非常にクロスブラウザです。したがって、親文書やiframeや矛盾について気にする必要はありません。

関連する問題