我的應用程序(正在開發中)使用Safari 4.0.3和JavaScript將其前端呈現給用戶。後端是PHP和SQLite。這是在OS X 10.5.8下。使用innerHTML加載iframe會出現什麼問題?
該應用程序將不時收到大量的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語句沒有被執行 - 我可以看到在Develop菜單中使用Safari的Error Console來查看iFrame。如果我從SQLite後端數據庫中提取HTML並將其保存爲.html文件,那麼Safari將毫不費力地渲染該文件。
任何意見,爲什麼這可能會發生,或者這種使用innerHTML,或指針討論相同,將不勝感激。
有趣的是,我在閱讀Gumbo的回覆之後,在看到你之前已經到達document.write。我也在我的評論中提到他的回覆中發現我需要做更多的數據驗證,我現在已經添加了。我在我的AJAX流中使用NUL,SOH和STX作爲數據分隔符,其中一個存在於這個html頭文件中。 您對安全性的評論很好 - 謝謝。目前我主要是爲了自己的喜好寫這篇文章,並且在退休後繼續做一些技術性的工作。不過,我可以看到,如果我想讓它有更廣泛的用途,我可能需要重新構建它。 再次感謝。 – clothears 2009-09-25 09:57:28