0

特にiOSで、innerHTML、appendChild、removeChildを使用してドキュメントを変更すると、CSS宣言が完全に削除され、スタイルのないバージョンのページが表示されるという問題が解決しません。

これに少しでも近いもので数時間グーグル検索した後、私は何も見つけることができませんでした。Android Galaxys2とiPad2でのみテストしましたが、他のモバイルデバイスで問題を再現することはできませんでした。

私はPCですべての主要なブラウザーをテストし、CSSが完全に正常に読み込まれるため、特にサファリではないことを知っています。これは、iOSのjavascriptの実装と関係があるように見えます。

これも私が記録した問題のビデオです(2分):
http ://www.facebook.com/photo.php?v = 4573014247189

編集:動作を複製するための最低限の機能を使用して、ライブサイトで複製することができました。
http://mlkart.com/ios_bug

編集:問題が見つかりました。現在、代替案を探しています。見つかったときに解決策を投稿しますが、iOSでの問題の原因は次のとおりです。

document.documentElement.innerHTML = document.documentElement.innerHTML.replace(oldStuff, newStuff);

最終的に発生するのは、bodyタグの外側とそれを含むすべてが誤って削除されていることです。これはiOSのJavaScriptのバグか、単なる癖かもしれませんが、私が知る限り、これは有効なセレクターであるはずです。

4

2 に答える 2

0

w3c http://validator.w3.org/#validate_by_inputで html を検証してみませんか? htmlのエラーが発生した場合、一部のブラウザーはエラーを修正し、他のブラウザーは修正しません。

同様に、JavaScript はブラウザによって異なる方法で動作する可能性があります。IEではなくfireFoxで完璧なjQueryコードを作成したことがあります。エラーは、要素の幅を取得していたが、最初はこの要素に幅がなかったため、IE の場合は 0 であり、fireFox の場合はこの中の要素に依存していました。

PC のサファリでテストしてみてください。

于 2012-09-06T23:49:50.487 に答える
0

iOS では、"documentElement" に関する JavaScript 関数の実装に問題があります。このコードを使用すると、iOS 環境でサイトが壊れますが、この問題が Oracle 側にあるのか Apple 側にあるのかはわかりません。

document.documentElement.innerHTML = document.documentElement.innerHTML.replace(oldStuff, newStuff);

これにより、iOS の HTML ドキュメントの body タグ以外のすべてが削除されました。

私の受け入れた解決策は、すべての出現を置き換えることでした

document.documentElement.innerHTML

document.body.innerHTML

ソリューションはテスト済みで、私がアクセスできる最新の利用可能なすべてのテスト手段で機能しているようです。

于 2012-09-07T03:48:50.770 に答える