我的应用程序(正在开发中)使用 Safari 4.0.3 和 JavaScript 向用户展示其前端。后端是 PHP 和 SQLite。这是在 OS X 10.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 的这种使用,或者指向相同讨论的指针,将不胜感激。