当我使用innerHTML,appendChild和removeChild更改文档时,我在iOS中有一个持久性问题我的CSS声明被完全剥离,我得到了页面的无样式版本。
经过几个小时的谷歌搜索后,我甚至无法找到任何东西。虽然我只在Android Galaxy s2和iPad 2上测试过,但我无法在其他移动设备上复制此问题。
我知道这不是特别的safari,因为我已经在PC上测试了所有主流浏览器并且CSS加载完全正常。它看起来就像是与javascript的iOS实现有关。
这是我录制的问题视频(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错误或只是一个怪癖,但据我所知,应该是一个有效的选择器!
答案 0 :(得分:0)
为什么不在w3c http://validator.w3.org/#validate_by_input中验证你的html,有时当html出现错误时,有些浏览器会更正错误而其他浏览器则没有。
同样,javascript可以以不同的方式工作,具体取决于浏览器。曾经有一个jQuery代码完美的fireFox而不是IE。错误是我占用了一个元素的宽度,但最初这个元素没有宽度,所以对于IE它是0,对于fireFox它取决于它内部的元素。
尝试在PC中的safari中进行测试。
答案 1 :(得分: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
解决方案已经过测试,并且可以在我可以访问的所有现有测试途径中使用。