新遇到浏览器兼容性的几个坑 document.currentScript和document.getElementsByTagName
原本并不那么关注safari,然而现在手机app运行一些js原生代码,却发现一些问题.
1. document.currentScript
在chrome上是没有问题的,然而到了safari和android浏览器(webkit内核)上就不行了, docment里面没有这个元素! 兼容性的方法是:
var currentScript = document.currentScript || (function() {
var scripts = document.getElementsByTagName('script');
return scripts[scripts.length - 1];
})();
2. document.getElementsByTagName
在chrome和safari上的返回值是不一样的.如果在console中运行:
typeof(document.getElementsByTagName("meta"))
在chrome中返回是object,在Safari中却是function
另外,如果有一个dom元素是:
在chrome中可以使用:
document.getElementsByTagName("meta")["viewport"]
来直接访问, 在safari中却不行.
简易解决方案, 在dom中增加id, 使用getElementById来访问, 这样两者的行为是一样的.
JS中:
document.getElementById("metavp")