如何修复:当javascript更改DOM时,iOS会删除CSS文件
How to Fix: iOS drops CSS files when javascript changes DOM
在iOS中,当我使用innerHTML、appendChild和removeChild修改文档时,我遇到了一个持久的问题。我的CSS声明被完全剥离,我得到了页面的无样式版本。
在谷歌上搜索了几个小时后,我再也找不到任何东西了,即使是非常接近这个的东西。虽然我只在安卓Galaxy s2和iPad2上进行了测试,但我无法在其他移动设备上复制这个问题。
我知道这并不是特别的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错误,也可能只是一个怪癖,但据我所知,这应该是一个有效的选择器!
为什么不在w3c中验证htmlhttp://validator.w3.org/#validate_by_input有时,当html出现错误时,一些浏览器会更正错误,而另一些则不会。
javascript也可以根据浏览器的不同以不同的方式工作。有一次,我在fireFox中有一个jQuery代码,但在IE中没有。错误是我取了一个元素的宽度,但最初这个元素没有宽度,所以对于IE来说是0,对于fireFox来说,这取决于其中的元素。
试着在你的电脑上进行safari测试。
在iOS中,关于"documentElement"的javascript函数实现存在问题。在iOS环境中使用此代码会破坏您的网站,但我不知道这个问题是甲骨文的还是苹果的。
document.documentElement.innerHTML = document.documentElement.innerHTML.replace(oldStuff, newStuff);
这已经删除了iOS中HTML文档中的body标记之外的所有内容。
我接受的解决方案是更换所有出现的
document.documentElement.innerHTML
带有
document.body.innerHTML
解决方案经过测试,似乎在我可以访问的所有现代可用测试途径中都能正常工作。
- 使用php或javascript从facebook相册URL中删除多余的部分
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 如何删除多行HTML排列中的空白
- 如何在iOS应用程序中从Firebase中删除超过6小时的数据
- 如何修复:当javascript更改DOM时,iOS会删除CSS文件
- 使用cordova插件删除iOS中应用程序的临时目录
- 删除的DOM元素仍然显示在移动safari(iOS 5.1)中
- 删除类在 iOS 上不起作用
- ios 风格 滑动删除动画在电话间隙
- 从 IOS 通知区域删除警报(推送通知)
- 新的iOS和Safari在滚动时删除了通过jQuery中的脚本添加的类
- 删除ios safari浏览器的网站数据
- 检查SQLlite IOS中是否存在DB并删除DB
- Rails on iOS - action "show"无法在:method =>:删除
- 删除默认IOS日期选择器的最佳方式
- 如何使DIV振动或嗡嗡作响?(类似于iOS的移动/删除应用程序功能)
- 如何让HTML搜索框中的单词在专注于iOS时自行删除
- 在Javascript中滑动到iOS的删除按钮
- iOS - 删除带有焦点输入元素的 iFrame 可使光标可见并打开键盘
- 我可以为android和ios删除哪些渐变css