RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 549673
Accepted
Гончаров Александр
Гончаров Александр
Asked:2020-07-29 03:54:48 +0000 UTC2020-07-29 03:54:48 +0000 UTC 2020-07-29 03:54:48 +0000 UTC

按浏览器版本筛选的JS插件

  • 772

例如,有一项任务是清除用户输入的浏览器,以便发出警告,如果用户从旧浏览器输入,一切都会消失。例如,我们有以下过滤列表:http ://caniuse.com/#feat=flexbox 。

是否有支持纯 JS 或 jQuery 的插件来弹出这样的弹出窗口?

在此处输入图像描述

屏幕截图显示了插件http://jreject.turnwheel.com,但不幸的是,它最后一次更新是在 2014 年——不支持移动浏览器。

javascript
  • 3 3 个回答
  • 10 Views

3 个回答

  • Voted
  1. Best Answer
    Гончаров Александр
    2020-08-01T18:40:27Z2020-08-01T18:40:27Z

    正如正确评论的那样 - 此任务分为两部分。首先是确定网站不支持用户的浏览器。第二个是显示一个尽可能兼容所有旧浏览器的窗口。

    第二个任务还是通过http://jreject.turnwheel.com插件完美解决了。对于第一个任务,正如@Alexey Ten 所写,您需要检查关键功能的可用性。

    例如,问题的解决方案(在没有 flexbox 支持的情况下弹出):

    var tst = document.createElement("div");
    var flexSupportCaps = [
        tst.style.flex, 
        tst.style.flexWrap, 
        tst.style.flexFlow,
        tst.style.flexGrow,
        tst.style.alignContent, 
        tst.style.alignItems, 
        tst.style.alignSelf, 
        tst.style.justifyContent, 
        tst.style.order
    ];
    if (flexSupportCaps.indexOf(undefined)!=-1){
        $(document).ready(function(){
            $.reject({
                reject: { all: true }, // Reject all renderers for demo  
                header: 'Браузер не поддерживается', // Header Text  
                paragraph1: 'Вы используете устаревший браузер.', // Paragraph 1  
                paragraph2: 'Для корректной работы портала vashsite.ru рекомендуем установить один из следущих браузеров, или обновить ваш до последней версии.',
                closeLink: 'Закрыть окно',  
                closeMessage: 'Я согласен с тем, что отображение сайта может быть некорректно.',
                imagePath: '/externals/jReject-master/images/',  
                closeCookie: true,
                browserInfo: {
                    msie: {
                        text: 'Microsoft Edge',  
                        url: 'https://www.microsoft.com/ru-ru/windows/microsoft-edge'  
                    }
                }
            }); 
        });
    }
    delete tst;
    

    检测到对 flexbox 的支持,如果不存在,则弹出 jReject 插件。它被吐出一次,如参数 所示closeCookie: true。

    • 3
  2. Саша Черных
    2020-01-06T18:39:53Z2020-01-06T18:39:53Z

    1 鲍泽

    如果我需要

    1. 为一些过时的浏览器编写警告,可能导致网站页面内容无法正确显示;

    或者

    1. 在一个浏览器中显示一个文本,在第二个浏览器中显示另一个文本——一个真实的例子;

    我正在使用 bowser库。


    2. bowser的特点

    1. 按浏览器类型(移动或桌面)、操作系统、引擎和名称进行过滤的能力。
    2. 支持不太流行的软件:例如,Sailfish OS、Tizen、K-Meleon 或 Sleipnir。
    3. 使用方便。src我们通过tag属性连接bowser,无需额外依赖script,编写脚本。脚本语法:
    if (bowser.$флаг для браузера, движка, ОС или типа устройства) {
        // Здесь пишем поведение, которое будет только у пользователей браузеров, объявленных флагом.
    }
    
    if (bowser.$флаг для браузера, движка, ОС или типа устройства && bowser.version <= $Номер версии: поведение, описанное ниже между {фигурными скобками}, будет применяться к версии под данным номером и версиям, которые ниже её. ) {
    // Здесь пишем поведение, которое будет только у пользователей браузеров, объявленных флагом, в версиях, ниже или равной указанной.
        }
    

    3.演示

    在这个例子中

    • 在Trident引擎的所有版本的浏览器中,例如Internet Explorer,将显示一个文本;
    • 在基于 Gecko 引擎的浏览器中,从版本 50 开始,另一个;
    • Gecko 50 以下浏览器的用户将看到一个模式窗口,提示他们使用更新的版本;
    • 其他浏览器的用户将看到一个空的结果。

    <meta charset=utf-8>
    <meta name=viewport content="width=device-width, initial-scale=1">
    <script src="http://fenixrepo.fao.org/cdn/faostat3/js/bowser/1.0/bowser.min.js"></script>
    <style type="text/css">
    #SashaBowserExplorer,
    #SashaBowserFirefox {
        color: mediumvioletred;
        font-size: 2rem;
    }
    </style>
    <div id="SashaBowserFirefox"></div>
    <div id="SashaBowserExplorer"></div>
    <script type="text/javascript">
    // Отображение в браузерах на движке Trident <= 11 MSHTML.dll версии
    if (bowser.msie) {
        var SashaBowserExplorer = document.getElementById("SashaBowserExplorer");
        SashaBowserExplorer.innerHTML = "Саша умнейшая, Она не станет пользоваться Internet Explorer.";
        // Отображение в браузерах на движке Gecko <= 49
    }
    // Отображение в браузерах на движке Gecko <= 49
    else if (bowser.gecko && bowser.version <= 49) {
        alert('Пожалуйста, используйте новые версии браузеров на движке Gecko, чтобы прочесть, насколько же Саша совершенна.');
    }
    // Отображение в браузерах на движке Gecko > 49
    else if (bowser.gecko) {
        var SashaBowserFirefox = document.getElementById("SashaBowserFirefox");
        SashaBowserFirefox.innerHTML = "Саша легендарная!";
    }
    </script>

    在浏览器中执行此代码的结果如下所示:

    互联网浏览器 11.576.14393.0

    IE

    火狐 31.0

    老火狐

    火狐 50.1.0

    新火狐


    4.附加链接

    • 浏览器 API。
    • 1
  3. Vladimir Gamalyan
    2020-01-06T18:47:23Z2020-01-06T18:47:23Z

    与其筛选浏览器,不如定义对特定功能的支持,例如使用modernizr。

    否则,您将必须使兼容浏览器的数据库保持最新。比如浏览器X不支持你需要的功能,你把它加到“黑名单”,六个月后有新版本出来,如果你现在不更新条件,它仍然是被认为“不适合”您的网站。另一种情况 - 将发布另一个“Yandex”浏览器,您的网站对此一无所知。

    对于您提到的 flexbox,通过 modernizir 检查可能看起来像这样(有一个附加条件 - flexwrap 支持):

    if (Modernizr.flexbox && Modernizr.flexwrap) {
      // Modern Flexbox with `flex-wrap` supported
    }
    else {
      // Either old Flexbox syntax, or `flex-wrap` not supported
    }
    
    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何停止编写糟糕的代码?

    • 3 个回答
  • Marko Smith

    onCreateView 方法重构

    • 1 个回答
  • Marko Smith

    通用还是非通用

    • 2 个回答
  • Marko Smith

    如何访问 jQuery 中的列

    • 1 个回答
  • Marko Smith

    *.tga 文件的组重命名(3620 个)

    • 1 个回答
  • Marko Smith

    内存分配列表C#

    • 1 个回答
  • Marko Smith

    常规赛适度贪婪

    • 1 个回答
  • Marko Smith

    如何制作自己的自动完成/自动更正?

    • 1 个回答
  • Marko Smith

    选择斐波那契数列

    • 2 个回答
  • Marko Smith

    所有 API 版本中的通用权限代码

    • 2 个回答
  • Martin Hope
    jfs *(星号)和 ** 双星号在 Python 中是什么意思? 2020-11-23 05:07:40 +0000 UTC
  • Martin Hope
    hwak 哪个孩子调用了父母的静态方法?还是不可能完成的任务? 2020-11-18 16:30:55 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    Arch ArrayList 与 LinkedList 的区别? 2020-09-20 02:42:49 +0000 UTC
  • Martin Hope
    iluxa1810 哪个更正确使用:if () 或 try-catch? 2020-08-23 18:56:13 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5