私のアプリ(開発中)は、Safari 4.0.3とJavaScriptを使用して、フロントエンドをユーザーに提示します。バックエンドはPHPとSQLiteです。これはOSX10.5.8の下にあります。
アプリは、ユーザーに提示するHTMLのチャンクを時々受信します。各チャンクは受信した電子メールの本文であるため、受信したHTMLの品質を制御することはできません。私がやっていることは、innerHTMLを使用してチャンクをiFrameに押し込み、Safariにレンダリングさせます。
それを行うために私はこれを行います:
window.frames["mainwindow"].window.frames["Frame1"].document.body.innerHTML = myvar;
myvarには、受信したHTMLが含まれています。現在、ほとんどの場合、これは希望どおりに機能し、HTMLは期待どおりにレンダリングされます。例外は、チャンクのタグが次のようになっている場合のようです。
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" ...
2800文字以上の場合も同様です。その効果は、上記のJavaScriptステートメントが実行されていないかのようです。[開発]メニューのSafariのエラーコンソールを使用してiFrameを調べていることがわかります。SQLiteバックエンドデータベースからHTMLを抽出し、それを.htmlファイルとして保存すると、Safariは問題なくそれをレンダリングします。
なぜこれが起こっているのか、innerHTMLのそのような使用、または同じことについての議論へのポインタについてのコメントをいただければ幸いです。