有没有办法检测window.print()的支持?我更愿意检测这个功能本身,而不是试图检测我是在移动浏览器或桌面,iOS或Android或我可能在哪个特定的移动浏览器上.
以下链接让我相信:
链接:
PS我在Modernizr文档中查看它是否可以检测到对打印的支持,但没有发现任何内容.
PPS我看到Chrome for iOS确实支持打印,尽管是通过GCP.在这里,只是寻找功能检测而不是打印解决方案.(https://support.google.com/chrome/answer/3049815?hl=zh-CN&ref_topic=1719889)
编辑 为了澄清,似乎window.print不是任何标准的一部分:https://developer.mozilla.org/en-US/docs/Web/API/Window.print.如果window.print存在于某些浏览器中但没有做任何有用的事情(例如,没有连接到适当的打印功能的任何特定于浏览器的实现),这最终是我想要检测的.
我的猜测是,移动浏览器供应商将为window.print定义一些内容,以便任何试图调用它的脚本都不会出错; 但是调用可能是No op,或者可能向操作系统发送OS忽略的请求.
我越是想到这可能会如何运作,我就会越来越没有希望通过一种简单的JavaScript方法来检测这个功能,这太糟糕了.
我们可以检测浏览器是否支持删除文件<input type="file" />?
例如,这可以在Chrome中实现,但在IE8中则不行.
Modernizr.draganddrop是一种可能性,但它是正确的选择吗?我没有添加任何自定义拖放事件处理程序.
更新
要验证Joe的答案,这是一个应该停止文件丢弃的jQuery示例.已在Chrome和Firefox中验证.
$yourFileInput.on('drop', function() {
return false; // if Joe's explanation was right, file will not be dropped
});
Run Code Online (Sandbox Code Playgroud) 如何使用Modernizr测试浏览器是否支持CSS3 calc()属性?
我试过了:
if (Modernizr.testProp('cssCalc')) {
console.log('CSS calc() supported');
}
Run Code Online (Sandbox Code Playgroud)
但这只会在控制台中返回" undefined ".
(我使用的是modernizr-2.6.2.js).
使用Modernizr进行浏览器功能检测的正确方法是什么?
我创建了一个基本的网络应用程序,如果它不处于独立模式(即不在您的主屏幕上),它会弹出一个小“单击此处添加到主屏幕”。我有一个基本的注册系统,通过电子邮件向用户发送指向应用程序的链接,但现在注意到,如果他们从 iOS Gmail 应用程序打开链接,带有选项菜单的底部栏不会出现,但弹出窗口仍然会出现。
我是否可以提取任何设备、浏览器或导航器属性来检测我是否在 Gmail 应用程序中而不是在 Mobile Safari 浏览器应用程序本身中?谢谢。
有没有办法检测哪些Windows XP主题正在使用?
我怀疑你没有特定的api调用,但你可以通过检查一些DOM元素,即特征检测来解决这个问题.
另一个问题:经典主题甚至存在于windows vista或windows 7上吗?
编辑 - 这是我的解决方案:
function isXpTheme() {
var rgb;
var map = { "rgb(212,208,200)" : false,
"rgb(236,233,216)" : true };
var $elem = $("<button>");
$elem.css("backgroundColor", "ButtonFace");
$("body").append($elem);
var elem = $elem.get(0);
if (document.defaultView && document.defaultView.getComputedStyle) {
s = document.defaultView.getComputedStyle(elem, "");
rgb = s && s.getPropertyValue("background-color");
} else if (elem.currentStyle) {
rgb = (function (el) { // get a rgb based color on IE
var oRG =document.body.createTextRange();
oRG.moveToElementText(el);
var iClr=oRG.queryCommandValue("BackColor");
return "rgb("+(iClr & 0xFF)+","+((iClr & …Run Code Online (Sandbox Code Playgroud) 通过JavaScript检测浏览器中任何css伪类支持的概念是什么?确切地说,我想检查用户的浏览器是否支持:checked伪类,因为我已经制作了一些带有复选框的CSS弹出窗口,并且需要为旧浏览器做回退.
javascript pseudo-class detection css3 browser-feature-detection
我正在寻找一种更清晰的方法来检测实际的名称transitionend.我已经看到很多例子只是强力添加处理程序到所有的变化.另外,我不想依赖jQuery(或类似的框架).
我基本上从这个列表开始,并希望绑定最合适的(即列表中的第一个匹配).
var transitionendName,
events = [
'transitionend',
'webkitTransitionEnd',
'MozTransitionEnd',
'oTransitionEnd'
];
// ^^^^^ your code here
myElem.addEventListener(transitionendName, myHandler, false);
Run Code Online (Sandbox Code Playgroud)
有人觉得他们有一个干净的解决方案吗?相同的解决方案可能适用于animationend事件.
编辑: msTransitionEnd和'-ms-'前缀属性在最终的IE10发布候选版本中被删除.
javascript-events css3 css-transitions browser-feature-detection
在Javascript中,您可以delete使用对象属性:
var o = { x: 1, y: 2 };
var wasDeleted = delete o.x;
Run Code Online (Sandbox Code Playgroud)
现在o.x应该是undefined,现在wasDeleted是true。
但是,您只能删除本机对象,不幸的是,浏览器对此似乎有不同的想法:
window.x = 1;
delete window.x;
Run Code Online (Sandbox Code Playgroud)
现在在Chrome和IE9-10 x中将是undefined,但在IE6-8中将引发异常:
“对象不支持此操作”
大。请注意,这并非delete不受支持...
// Oops, no var, so this is now a global, should've 'use strict'
o = { x: 1, y: 2 };
// Works
delete o.x;
// Works
delete window.o.y;
// Fails, but only in IE6-8 :-(
delete window.o
Run Code Online (Sandbox Code Playgroud)
我意识到我可以添加一个 …
javascript cross-browser ecmascript-5 browser-feature-detection
除浏览器嗅探外,有没有办法确定浏览器是否支持使用数据URI进行超链接?
这是上下文:
我创建一个链接,要么下载使用一个方便的数据URI或者,通过JavaScript产生,如果浏览器不支持使用数据URI的超链接信息的CSV文件,生成所需内容的HTML表格.
现在我的代码检查window.URL属性的存在,这在IE9及以下版本中不存在.(现在这个工作正常,因为我需要支持的IE用户在兼容模式下运行,模拟IE8.)
if(window.URL){
downloadLink.href = "data:text/csv;charset=utf-8," + encodeURIComponent(data);
downloadLink.setAttribute("download","download.csv");
}else{
downloadLink.href= "#";
downloadLink.innerHTML = "table view";
downloadLink.onclick = function(){
// build and display HTML table
return false;
};
}
Run Code Online (Sandbox Code Playgroud)
然而,有一个与在Internet Explorer中的新版本(10,11,以及边缘),它们支持的window.URL对象但有一些重叠不会允许数据URI的超链接.
如何确保下载CSV的链接永远不会显示给不支持此类功能的浏览器?
html javascript internet-explorer data-uri browser-feature-detection
所有体面的浏览器(Chrome,FX等)现在都支持内置的拼写检查.
然而IE的流行但垃圾轴却没有(甚至不是IE8 - 毫无意义的'加速器':是的,非常需要字典支持:否).除非你下载一个优秀的免费插件,但你不能指望corp用户这样做.
我们的客户希望在我们提供的企业网络应用程序中进行拼写检查,因此我们购买了第三方拼写检查组件以保证他们满意.它可以工作,但并不是非常好 - 特别是与浏览器中内置的任何东西相比.
它看起来也像Word 2000中的拼写检查对话框(可能是在开发时的当前版本).对我们的客户来说不是这样的问题,其中一半人被困在Office 2000和IE6上.
我想只在用户没有内置拼写检查时启用此组件.
有谁知道检测这个的方法?
javascript ×6
css3 ×3
html ×2
data-uri ×1
detection ×1
ecmascript-5 ×1
gmail ×1
mobile ×1
modernizr ×1
printing ×1
pseudo-class ×1
windows ×1