为了账号安全,请及时绑定邮箱和手机立即绑定

尝试在 IE11 中加载损坏的 JS 时保留 HTML 而不是显示空白页面

尝试在 IE11 中加载损坏的 JS 时保留 HTML 而不是显示空白页面

有只小跳蛙 2023-05-25 16:41:30
我正在开发一个节点项目,该项目在构建网站时使用 create-react-app 和 webpack 来捆绑 JavaScript 文件。我不打算支持 IE,但是我希望向使用 IE 打开应用程序的用户显示一条消息,因为默认情况下,由于 create-react-app 缺少对浏览器的支持,应用程序崩溃而没有polyfills。这个想法是在 Webpack 使用的 HTML 模板中包含一条加载消息,当 React 完成渲染时将其删除。如果 React 无法正确呈现或浏览器不支持某些 JS,则加载消息应该保留在那里。但是,当 JS 文件包含在浏览器中时,由于 JavaScript 文件中的错误(即 IE 不支持的功能),整个页面就变成空白,因此消息也消失了。有什么办法可以防止页面变成空白,而是保留之前的 HTML?
查看完整描述

1 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

我建议您尝试在文件开头添加下面的 polyfill index.js。


import 'react-app-polyfill/ie11';

import 'react-app-polyfill/stable';

如有必要,添加其他 polyfill。


在文件中添加IE 11开发。browserlistpackage.json


"browserslist": {

    "production": [

      "ie 11",      

      ">0.2%",

      "not dead",

      "not op_mini all"

    ],

    "development": [

      "ie 11",

      "last 1 chrome version",

      "last 1 firefox version",

      "last 1 safari version"

    ]

  }

删除.cache文件夹内的node_modules文件夹,然后再次尝试运行该应用程序。


应用程序应在 IE 11 浏览器中加载。


之后尝试使用下面的 JS 代码并将其添加到您的 React 应用程序中。


下面的代码将使用用户代理识别 IE 浏览器,您可以向用户显示有用的消息。


 function detectIE() {

           var ua = window.navigator.userAgent;

         

           var msie = ua.indexOf('MSIE ');

           if (msie > 0) {

            

             return "IE " + parseInt( ua.substring(msie + 5, ua.indexOf('.', msie)), 10);

           }

         

           var trident = ua.indexOf('Trident/');

           if (trident > 0) {

            

             var rv = ua.indexOf('rv:');

             return "IE " + parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);

           }


           // other browser

           return "false";

         }

         var result=detectIE();

         if (result=="false")

         {

            document.getElementById("info").innerHTML +="<h2>Welcome to the site...</h2>";

         }

         else

         {

            document.getElementById("info").innerHTML += "<h2>Dear user you are using " + result + " This browser is not supported by this site. Kindly use supported browser...</h2>";

         }

此外,您可以根据自己的要求修改代码示例。


查看完整回答
反对 回复 2023-05-25
  • 1 回答
  • 0 关注
  • 77 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信