Open creeperyang opened 9 years ago
jQuery.fn.text()
在IE8上的兼容性问题背景:很简单的字符串模板,需要获取<script type='text/tpl'/>
类似的文本内容。采用了$script.text()
来获取,其中jQuery版本为1.8.3/1.11.3
。
在现代浏览器基本没问题,测试IE8时发现,取得内容为空字符串。
首先尝试$script.html()
来代替,OK,可以取得文本。$.fn.html
的实现采用elem.innerHTML
,兼容性很好。
那$script.text()
为什么不兼容IE8?
https://github.com/jquery/jquery/blob/1.11.3/dist/jquery.js#L1536-L1565
以上是1.11.3版本的$.text
的实现,可以看出:
jQuery
首先尝试用textContent
去获取,很抱歉,IE8不支持;<script>
节点,发现IE8上其子节点为0(scriptDom.children--length: 0; scriptDom.firstChild: null
)。好了,这就是为什么$script.text()
为空了:既不支持scriptDom.textContent
,又任性地设定scriptDom.firstChild
为空。 所以还是用$script.html()
吧。
Chrome 现在也禁止导航到 Data URI 了。 Firefox 目前不能从特权域继承权限地打开 Data URI 。
@tiansh 没有追踪这个了,你如果有空/有意愿,可以在这里补充新情况。
getUserMedia
和 AudioContext
)需求是使用Audio API实现录音和上传服务器,在chrome上轻松实现了demo,但是在 iOS 11 上测试时,发现录音无效。
调试,发现 onaudioprocess
事件根本没用触发,why?
原因见 https://stackoverflow.com/questions/46363048/onaudioprocess-not-called-on-ios11/46534088#46534088
一步步调试发现:
onaudioprocess
必须在 getUserMedia
后注册createScriptProcessor
创建)也不能事先 connect ,要在getUserMedia
时connect。
虽然早放弃IE6/7,然而兼容仍然是前端必须面对的事。
1. data uri兼容Edge
今天(2015/08/21)产品突然报了个bug:Microsoft Edge浏览器内,报表下载无法正常使用。
然而我并不是win10用户:joy: 花了一番力气,成功定位到错误:
真是一头雾水,
<a href='data:text/csv;charset=utf-8,xxxxxxx' download='y.csv'></a>
在chrome
,firefox
甚至ie9-11
都能工作,怎么你号称更标准的Edge
就这样子?查阅文档,终于弄明白了这迷惑的警告信息:
<a>
,我大Edge
准备跳转到data:text/csv;charset=utf-8,xxxxxxx'
;data:text/
是协议,然后这:shit:内容csv;charset=utf-8,xxxxxxx
完全不认识啊!doctype
提示下?而
Edge
为什么没法智能识别data uri?<a>
的download
属性并没有被Edge
支持;怎么解决?
万幸的是
Edge
支持msSaveBlob
,所以可以用它来代替data uri。详细的可查阅http://stackoverflow.com/questions/14964035/how-to-export-javascript-array-info-to-csv-on-client-side