【发布时间】:2012-09-06 23:28:20
【问题描述】:
当我使用 innerHTML、appendChild 和 removeChild 更改文档时,我在 iOS 中遇到了一个持续存在的问题,我的 CSS 声明被完全剥离,我得到了页面的无样式版本。
经过几个小时的谷歌搜索后,我无法找到任何东西,甚至远程接近这个。尽管我只在 Android Galaxy s2 和 iPad 2 上进行了测试,但我无法在其他移动设备上重现该问题。
我知道这不是专门的 safari,因为我已经在 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);
最终发生的事情是身体标签之外的所有内容都被错误地剥离了。这可能是一个 iOS javascript 错误或只是一个怪癖,但据我所知,这应该是一个有效的选择器!
【问题讨论】:
-
我之前在 iOS 上做过类似的工作,但在 UIWebView 中,而不是移动 safari。在我的例子中,CSS 嵌入在页面中。
-
我正在使用典型的 方法将我的外部 CSS 包含到页面中,尽管该代码在页面之间永远不会更改,因此它停止在这些页面上工作的原因超出了我。
-
@John Conde:这与移动 Safari 无关,因为我也在 iPad 2 的 Mercury 浏览器上进行了测试,问题也存在。
标签: javascript css ios dom innerhtml