为什么Gmail一旦动态加载Modernizr就会发疯?
Why does Gmail go bonkers once Modernizr is dynamically loaded in it?
将此输入Chrome或Safari检查器控制台,在Gmail内部:
function load(url,cb){var x=document.body.appendChild(document.createElement('script'));x.src=url;x.onload=function(){console.log("Dynamically loaded "+url);if(cb){cb();}};if(!cb){x.setAttribute('async','')}}
load("https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js",function(){alert("Modernizr loaded");});
导致大部分文本的布局变得很乱。
这可以解释吗?我希望我的工具(需要运行一个动态加载Modernizr的书签工具)能在Gmail上工作。
Modernizer向<html>
标签添加了许多类,其中一个类是js
。我在文档中找不到任何描述它代表什么的内容,尽管我怀疑它只是代表JavaScript支持。Google缩小了它们的类,所以它们都是简短的两个字母的项目(可能是生成的)。其中一个恰好是js
,这导致很多文本居中。
事实上,要取消它,只需在动态加载脚本后从<html>
标签中删除js
类,它就会自行修复。
这里有一个固定的版本:
function load(url,cb){var x=document.body.appendChild(document.createElement('script'));x.src=url;x.onload=function(){console.log("Dynamically loaded "+url);if(cb){cb();}};if(!cb){x.setAttribute('async','')}}
load("https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js",function(){var htmlElement = document.getElementsByTagName("html")[0]; htmlElement.className = htmlElement.className.replace
( /(?:^|'s)js(?!'S)/g , '' ); alert("Modernizr loaded");});
相关文章:
- 在jquery文档准备好之前加载Modernizr
- 对于如何在没有modernizr的情况下用边界半径的功能检测检查来替换我的旧浏览器检查
- 使用Modernizr检测移动设备最可靠的方法是什么
- modernizr.js还有用吗
- Modernizr IE跳过“;卸载”;
- 由于正在加载modernizr,表单在单击时未提交
- Polyfill CSS Transition with Modernizr
- 使用 Modernizr 对 CSS 过渡进行填充
- 用modernizr测试ie中的指针事件
- YepNope/Modernizr 回调,包含全局 JavaScript 变量和 Internet Explorer
- modernizr降低了表分类器的速度
- 使用modernizr为不支持webgl的浏览器提供备用背景图像
- enquire.js javascript没有't执行(enquire.js,Modernizr,jQuery)
- 在现有的HTML5应用程序上使用Modernizr使其与ie8兼容
- 是否可以将modernizr添加到jsFiddle中,并在Chrome/ffirefox中查看css3透视图
- JavaScript文件和Modernizr/yepnope的结构
- 使用modernizr检测iOS设备
- modernizr和ajax负载冲突
- 向modernizr添加测试的正确方法是什么
- 为什么Gmail一旦动态加载Modernizr就会发疯?