标签: browser-feature-detection

window.print()JavaScript的特征检测解决方案

有没有办法检测window.print()的支持?我更愿意检测这个功能本身,而不是试图检测我是在移动浏览器或桌面,iOS或Android或我可能在哪个特定的移动浏览器上.

背景

以下链接让我相信:

  • Apple要求所有第三方浏览器都使用UIWebView
  • 运行window.print()时,非Safari应用程序中使用的UIWebView不执行任何操作
  • 运行window.print()时,iOS上的Safari会执行适当的操作

链接:

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方法来检测这个功能,这太糟糕了.

javascript printing browser-feature-detection

8
推荐指数
1
解决办法
7958
查看次数

通过HTML文件输入删除文件的功能检测功能

我们可以检测浏览器是否支持删除文件<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)

html javascript browser-feature-detection

7
推荐指数
1
解决办法
383
查看次数

使用Modernizr测试浏览器对css calc()的支持

如何使用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进行浏览器功能检测的正确方法是什么?

css3 modernizr browser-feature-detection

7
推荐指数
1
解决办法
5203
查看次数

Mobile Safari:检测是否在 Gmail 应用程序中

我创建了一个基本的网络应用程序,如果它不处于独立模式(即不在您的主屏幕上),它会弹出一个小“单击此处添加到主屏幕”。我有一个基本的注册系统,通过电子邮件向用户发送指向应用程序的链接,但现在注意到,如果他们从 iOS Gmail 应用程序打开链接,带有选项菜单的底部栏不会出现,但弹出窗口仍然会出现。

我是否可以提取任何设备、浏览器或导航器属性来检测我是否在 Gmail 应用程序中而不是在 Mobile Safari 浏览器应用程序本身中?谢谢。

mobile gmail mobile-safari browser-feature-detection

7
推荐指数
0
解决办法
433
查看次数

javascript:检测是否启用了XP或Classic Windows主题

有没有办法检测哪些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 windows browser-feature-detection

6
推荐指数
1
解决办法
1463
查看次数

如何检测浏览器是否支持指定css伪类?

通过JavaScript检测浏览器中任何css伪类支持的概念是什么?确切地说,我想检查用户的浏览器是否支持:checked伪类,因为我已经制作了一些带有复选框的CSS弹出窗口,并且需要为旧浏览器做回退.

答案:我发现已经实现了在Modernizr "附加测试"中测试css选择器的方法.

javascript pseudo-class detection css3 browser-feature-detection

6
推荐指数
1
解决办法
7248
查看次数

transtionend/animationend事件的特征检测?

我正在寻找一种更清晰的方法来检测实际的名称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

6
推荐指数
1
解决办法
3679
查看次数

检查是否支持Javascript删除功能

在Javascript中,您可以delete使用对象属性:

var o = { x: 1, y: 2 };

var wasDeleted = delete o.x;
Run Code Online (Sandbox Code Playgroud)

现在o.x应该是undefined,现在wasDeletedtrue

但是,您只能删除本机对象,不幸的是,浏览器对此似乎有不同的想法:

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

6
推荐指数
1
解决办法
2109
查看次数

如何确定浏览器是否支持超链接的数据URI

除浏览器嗅探外,有没有办法确定浏览器是否支持使用数据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

6
推荐指数
1
解决办法
126
查看次数

浏览器功能检测:拼写检查?

所有体面的浏览器(Chrome,FX等)现在都支持内置的拼写检查.

然而IE的流行但垃圾轴却没有(甚至不是IE8 - 毫无意义的'加速器':是的,非常需要字典支持:否).除非你下载一个优秀的免费插件,但你不能指望corp用户这样做.

我们的客户希望在我们提供的企业网络应用程序中进行拼写检查,因此我们购买了第三方拼写检查组件以保证他们满意.它可以工作,但并不是非常好 - 特别是与浏览器中内置的任何东西相比.

它看起来也像Word 2000中的拼写检查对话框(可能是在开发时的当前版本).对我们的客户来说不是这样的问题,其中一半人被困在Office 2000和IE6上.

我想只在用户没有内置拼写检查时启用此组件.

有谁知道检测这个的方法?

spell-checking cross-browser browser-feature-detection

5
推荐指数
1
解决办法
2283
查看次数