これは Firefox Home の厳密な問題のようです。Mozzilla がサポートを打ち切り、iStore の場合は削除したため、回避策を探しても意味がないと思います ( http://thenextweb.com/apps/2012/08/ 31/mozilla-retires-firefox-home-ios-releases-source-code-github/ )、とにかく私は彼らにバグを投稿しました ( https://bugzilla.mozilla.org/show_bug.cgi?id=853377 )フォロー/販売に興味がある
iframe メソッドを使用して通信する非常に優れたクロスブラウジング ライブラリがあります。
そして、iPhone の Firefox で開くまでは美しい動作をします。ライブラリを含むページが開始され、魔法のようにリダイレクトされます。
さて、私はコードに入り、問題を特定しようとしました:
iframe 親リロードを iframe src に動的に追加した後。私は以下をテストしました:
document.createElement('iframe')
ドキュメントへの追加document.createElement('iframe')
事前作成された div への追加.innerHTML
事前に作成された iframe コードを含むメソッドframes['iframe_name'].location.src
空のsrcを持つ事前作成されたiframeを使用.location.assign()
document.getElementById()
失敗するframes['iframe_name']
リダイレクトあり
- jqueryと同じ
$('<iframe src="link"/>'). appendTo('#reportA');
- 最初にsrcなしでiframeを作成してから設定しようとしました
$('#iframe').attr('src','link')
また、原因リダイレクトで更新します
さらに、ログに表示されます(iframeのページと呼ばれるステータスがログに記録されています)。実際には 2 つの呼び出しがあったため、最初に追加された iframe が読み込まれ、次に新しいページで iframe src が開かれるように見えます。
コードを分析しているときに、js ローダーによって動的に追加されたコードの一部で iframe が作成されたときに問題が発生することがわかりました。次の追加スクリプトを使用しました
var head = document.getElementsByTagName("head")[0];
var script = null;
script = document.createElement('script');
script.type = 'text/javascript';
var tag = Math.round(new Date().getTime() / 1000);
script.src = GLOBAL_VARIABLE_WITH_PATH_TO_URL+'jsc/include.js?'+tag ;
head.appendChild(script);
も試した
document.write("<script src='"+FUTUREclickINFOpathS+"fcijsc/fci-include.js?"+tag+"'><\/script>");
アップデート
また、jqueryにirameを追加しようとしました-メソッドで$(document).ready()
使用すると、追加を呼び出すまで正常に動作しますdocument.write
setTimeout
さらに奇妙なことにsetTimeout()
、メインの静的 js ファイルで使用すると、同じことが起こります。今日試してみて、何がsetInterval()
起こっているのか見てみましょう。
したがって、iframe が事前に作成されていたとしても、iframe の src を変更すると、親のリロードが発生することは明らかです。理由はありますか?
ps。わかりにくい文章で申し訳ありませんが、その問題に頭を悩ませました