当前位置: 首页 > 面试题库 >

使用Modernizr来检测IE的正确方法?

叶谦
2023-03-14
问题内容

这可能是一个愚蠢的问题,但是我想使用Modernizr JS库检测一些浏览器属性,以确定要显示或不显示什么内容。

我有一个名为Pano2VR的应用程序,它可以同时输出HTML5和SWF。我需要用于iOS设备用户的HTML5。

但是,IE根本不呈现此“ HTML5”输出。看来他们的输出使用CSS3 3D变换和WebGL,IE9中显然不支持一种或多种。

因此,对于那些用户,我需要显示Flash版本。我打算使用IFRAME,并通过Modernizr脚本或document传递SRC。根据浏览器写出正确的IFRAME代码。

所有这些导致我如何使用Modernizr来仅检测IE或不检测IE?还是检测CSS 3d转换?

还是有其他方法可以做到这一点?


问题答案:

我同意我们应该测试功能,但是很难找到一个简单的答案:“现代浏览器支持哪些功能,而旧浏览器不支持?”

因此,我启动了许多浏览器,并直接检查了Modernizer。我添加了一些我绝对需要的功能,然后添加了“
inputtypes.color”,因为它似乎涵盖了我关心的所有主要浏览器:Chrome,Firefox,Opera,Edge
…和IE11。现在,我可以轻轻建议用户使用Chrome / Opera / Firefox / Edge会更好。

这就是我使用的-您可以编辑事物列表以测试您的特定情况。如果缺少任何功能,则返回false。

/**
 * Check browser capabilities.
 */
public CheckBrowser(): boolean
{
    let tests = ["csstransforms3d", "canvas", "flexbox", "webgl", "inputtypes.color"];

    // Lets see what each browser can do and compare...
    //console.log("Modernizr", Modernizr);

    for (let i = 0; i < tests.length; i++)
    {
        // if you don't test for nested properties then you can just use
        // "if (!Modernizr[tests[i]])" instead
        if (!ObjectUtils.GetProperty(Modernizr, tests[i]))
        {
            console.error("Browser Capability missing: " + tests[i]);
            return false;
        }
    }

    return true;
}

这是“ inputtypes.color”所需的GetProperty方法。

/**
 * Get a property value from the target object specified by name.
 * 
 * The property name may be a nested property, e.g. "Contact.Address.Code".
 * 
 * Returns undefined if a property is undefined (an existing property could be null).
 * If the property exists and has the value undefined then good luck with that.
 */
public static GetProperty(target: any, propertyName: string): any
{
    if (!(target && propertyName))
    {
        return undefined;
    }

    var o = target;

    propertyName = propertyName.replace(/\[(\w+)\]/g, ".$1");
    propertyName = propertyName.replace(/^\./, "");

    var a = propertyName.split(".");

    while (a.length)
    {
        var n = a.shift();

        if (n in o)
        {
            o = o[n];

            if (o == null)
            {
                return undefined;
            }
        }
        else
        {
            return undefined;
        }
    }

    return o;
}


 类似资料:
  • 本文向大家介绍使用Modernizr检测HTML5功能,包括了使用Modernizr检测HTML5功能的使用技巧和注意事项,需要的朋友参考一下 Modernizr是一个小型JavaScript库,用于检测下一代Web技术的本机实现的可用性。 这是Modernizr可以检测到的功能列表- 特征 CSS属性 JavaScript检查 @ font-face .fontface Modernizr.fo

  • 本文向大家介绍Modernizr检测到的功能,包括了Modernizr检测到的功能的使用技巧和注意事项,需要的朋友参考一下 以下是Modernizr可以检测到的功能列表- 特征 CSS属性 JavaScript检查 @ font-face .fontface Modernizr.fontface 帆布 。帆布 现代画布 画布文字 .canvastext Modernizr.canvastext H

  • 问题内容: 如何检测使用Javascript(并且不使用modernizr)的浏览器支持CSS转换? 问题答案: 也许是这样的。基本上,它只是在查看是否已定义CSS 属性: 改编自此要点。所有的功劳都去了。

  • 问题内容: 我想编写一个接受参数的函数,该参数可以是序列或单个值。值的类型为str,int等,但我 不 希望将其限制为硬编码列表。换句话说,我想知道参数X是一个序列还是必须转换为序列的对象,以避免以后出现特殊情况。我可以做 但是可能还有我不知道的其他序列类型,也没有通用的基类。 -N。 编辑 :请参阅下面的“答案”,了解其中大多数答案对我没有帮助的原因。也许您有更好的建议。 问题答案: 上述所有方

  • 我用一个程序来检测图像中的正方形。这与我从互联网下载的图像很好地配合。但我应该做的是检测从相机拍摄的图像的方块。首先,我从视频中提取图像,然后我尝试从这些图像集中检测正方形,但代码对这些提取的图像不起作用(但对其他图像效果很好)。我应该怎么做才能完成那项任务?

  • 问题内容: 我在下面找到此定向测试代码,以查找JQTouch参考资料。这可以在移动Safari上的iOS模拟器中正常运行,但在Phonegap中无法正确处理。我的项目遇到了与杀死该测试页相同的问题。有没有办法在Phonegap中使用JavaScript来感知方向变化? 问题答案: 这是我的工作: * 根据MDN的定义, *2019年5月更新:已弃用,大多数浏览器均不支持。该事件与window.or