是否可以通过Modernizr检测浏览器是否具有Html5 Audio支持?如果是这样,这是怎么做到的?如果不是,有什么工作吗?谷歌解释这一点的资源很少,所以任何帮助都会受到赞赏.
如何使用Modernizr和YepNope检查FormData对象?
<script>
yepnope({
test : what.to.check,
yep : 'normal.js',
nope : 'flashupload.js'
});
</script>
Run Code Online (Sandbox Code Playgroud) 现代化器可以检测浏览器是否安装并启用了pdf插件?我在Web应用程序的iframe中显示pdf.当pdf插件不存在时,我从dom客户端删除iframe.我正在使用一些笨重的javascript来进行检测,并希望用更强大/标准的东西替换它并遇到了modernizr.任何人都知道这是否可行?
我目前正在开始在Acquia上开发drupal网站.使用git和本地工作对我来说是一个新的工作流程.在本地构建并尝试使用Modernizr load/yepnope时,我的script.js文件中的JS通常看起来像这样.
Modernizr.load([
{
test: Modernizr.mq('only all'),
nope: '/sitename/docroot/sites/all/themes/theme/js/libs/polyfill.js'
},
....
Run Code Online (Sandbox Code Playgroud)
所以它在我的机器上本地工作,但当我提交我的更改并推送到我的acquia开发服务器时,加载的脚本的文件路径是不正确的,因为它不是我想的相同的设置.
http://mysite.devcloud.acquia-sites.com/mysite/docroot/sites/all/themes/theme/js/libs/polyfill.js
它必须是下面的,没有URL中的mysite/docroot.
http://mysite.devcloud.acquia-sites.com/sites/all/themes/theme/js/libs/polyfill.js
这样就把我带到了Drupal.settings.basePath.如果我打印出来,它会在我的本地设置上给我/ mysite/docroot /.如果我在开发服务器上执行它,它会打印出不同的东西(可能只是/).
所以我作为业余爱好者认为我可以做这样的事情..(原谅可怜的样本,我知道它可以做得更好)
var myroot = Drupal.settings.basePath
Modernizr.load([
{
test: Modernizr.mq('only all'),
nope: myroot + 'sites/all/themes/theme/js/libs/polyfill.js'
},
....
Run Code Online (Sandbox Code Playgroud)
这当然不起作用.只返回query1未定义.
所以我确信在我的许多尝试中都存在错误.所以如果有人可以向我推荐一些内容,无论是工作流相关还是如何修复我的设置/代码,那都会很棒.
谢谢
我们正在编写网站逻辑,其设计是由另一家公司制作的.(他们发给我们的html文件)
但是当我们查看他们的源代码html时,我们看到:
1) modernizr.js
2)创建html5元素脚本:
<!--[if lt IE 9]>
<script>
document.createElement('header');
document.createElement('nav');
document.createElement('section');
document.createElement('article');
document.createElement('aside');
document.createElement('footer');
</script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)
3) Html5 shiv JS:
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)
4)css3-mediaqueries.js对媒体查询的引用
5) Respond.js v1.1.0 最小/最大宽度媒体查询
我对html5集成了解不多,但我认为这里有一个冗余组件.
例如,我听说modernizr 已经包含了html5 shiv提供的解决方案.
作为我想要使用的假设,我modernizr.js应该保留哪些组件?(我用数字标记每个部分,以便您更容易参考).
(ps 这个问题没有多大帮助,因为我有更多的部分)
我正在开发一个为触控设备实现特定功能的网站.我的目标是智能手机,平板电脑以及使用触摸屏作为主要输入的所有内容.
为了达到这个目的,我正在使用Modernizr Modernizr.touch
但是,对于安装了Wacom数位板的计算机,这将返回true.(与Wacom Intuos 5确认).显然,这些计算机上的主要输入设备是键盘和鼠标,而不是触摸屏.这会造成误报,因为我想为这些计算机而不是触摸屏用户体验提供桌面用户体验.
有没有办法检查"触摸屏功能",而不是"触摸功能"?或者任何其他创造性的方法来解决这个并避免误报?
我一直使用在<html>标签上有一类.no-js的方法,然后使用剥离标签的modernizr,如果在用户的浏览器中启用了JavaScript,则将其替换为js.
基本上,我已经构建了一个CSS3移动和桌面导航.我有样式来改变它的行为,如果有CSS转换等(使用modernizr检查)以及是否有js或no-js.
问题是,在JavaScript有时间加载并将类更改为js之前,我得到了一个no-js版本的flash.(因为默认类是no-js)
我无法理解的是如何找到解决方案.如果我将js特定代码作为主类,那么使用前缀.no-js指定另一个,即使启用了js,它也会闪烁no-js.如果我将其切换,它也会这样做......
也许我是愚蠢的,但任何指针都会很棒.
我正在使用CDN加载Bootstrap.css.我的问题是如何检查CDN引导程序是否已加载/找到.如果不是,那么加载本地Boostrap.
这是Jquery的后备..
<script type="text/javascript">
Modernizr.load([
{
load: '//cdnjs.cloudflare.com/ajax/libs/jquery/1.10.1/jquery.min.js',
complete: function () {
if ( !window.jQuery ) {
Modernizr.load([
{
load: config.js + 'vendor/jquery-1.10.1.min.js',
complete: function () {
console.log("Local jquery-1.10.1.min.js loaded !");
}
}
]);
} else {
console.log("CDN jquery-1.10.1.min.js loaded !");
}
}
}
]);
</script>
Run Code Online (Sandbox Code Playgroud)
这就是我加载Modernizr而不是Css的方式:
<script src="//cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
<script type="text/javascript">
if (typeof Modernizr == 'undefined') {
document.write(unescape("%3Cscript src='" + config.js + "/vendor/modernizr-2.6.2-respond-1.1.0.min.js' type='text/javascript'%3E%3C/script%3E"));
console.log("Local Modernizer loaded !");
}
</script>
<script type="text/javascript">
Modernizr.load([
{
load: config.css + "bootstrap.css",
complete: function …Run Code Online (Sandbox Code Playgroud) 我的应用程序包括在结束<head>标记之前的Modernizr(与prefixfree连接),以及在结束标记之前的其余js <body>.99.9%的时间这个工作正常,但有时我得到Modernizr is not defined.
导致错误的代码是:
if(!Modernizr.csscalc) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
这个错误发生在真实的客户端上(我通过电子邮件收到通知),所以我没有比这个错误字符串更多的数据.即使在相同的操作系统和浏览器上,我也无法重现它.
我不清楚这个零星错误可能是什么原因造成的.你能指点我吗?我在这里做错了吗?
我在安装软件包的deps时遇到此错误:
$ npm i
npm ERR! code EINTEGRITY
npm ERR! sha1-tU7jWojzuU8MIY2VLAx+BwluNo0= integrity checksum failed when using sha1: wanted sha1-tU7jWojzuU8MIY2VLAx+BwluNo0= but got sha1-oXYP0kzpbhku0KU+phy353lbBhQ=. (26624 bytes)
npm ERR! A complete log of this run can be found in:
npm ERR! /home/tlenex/.npm/_logs/2017-06-22T10_18_19_773Z-debug.log
Run Code Online (Sandbox Code Playgroud)
问题是我的Modernizr依赖关系:
"dependencies": {
"Modernizr": "https://modernizr.com/download?setclasses-flash"
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以解决此问题或忽略此完整性检查?
目前我要跑步
npm i https://modernizr.com/download?setclasses-flash
Run Code Online (Sandbox Code Playgroud)
再次使工作正常,这将覆盖my中的"integrity"字段。每当从此链接获取的软件包发生更改并且需要重新安装我的软件包依赖项时(例如,每次在CI构建中),都可能发生这种情况"Modernizr"package-lock.jsonModernizr
如果没有其他解决方法?我希望我不必package-lock.json在.gitignore文件中放:(
有关我的环境的更多数据:
$ npm -v
5.0.3
$ node -v
v6.11.0
Run Code Online (Sandbox Code Playgroud) modernizr ×10
javascript ×7
yepnope ×3
html5 ×2
css ×1
css3 ×1
drupal-7 ×1
html ×1
node.js ×1
npm ×1
npm-install ×1
pdf ×1
touchscreen ×1
wacom ×1