sany217 发表于 2014-11-6 13:00:28

通达OA 2013增强版IE8版本提醒

由于IE版本的原因,OA系统在各个电脑上表现各有差异(会出现表单错位的情况),于是想到打开OA时提示更新IE8。先上效果图(各种马赛克)。
客户端登录:



WEB登录:


修改方法:
客户端,修改\MYOA\webroot\static\js目录下ispirit_index.js文件,
1.在285行添加函数
function checkIE(){
        var v = 0;
        var ua = navigator.userAgent; //获取用户端信息
        var b = ua.indexOf("MSIE "); //检测特殊字符串"MSIE "的位置
        if (b >= 0) {
                //截取版本号字符串,并转换为数值
                v = (ua.substring(b + 5, ua.indexOf(";", b)));
        }
       
        if(b < 0 || parseFloat(v) < 8){
                if(confirm('系统检测到您正在使用非IE8浏览器,为了保证你浏览效果,推荐您使用IE8运行本系统,请问是否下载安装包并升级?')){
                  window.location.href = "/ie8/IE8-WindowsXP-x86-CHS.exe";
                }
        }
       
        return;
    };2.在291行添加函数调用。
//检测IE浏览器版本是否为IE8及以上版本
checkIE();3.保存并关闭文件。
完成后代码截图:


WEB,修改\MYOA\webroot\static\templates\2013_01目录下index.html文件,
1.在10行添加函数
<script type="text/javascript">
        function checkIE(){
                var v = 0;
                var ua = navigator.userAgent; //获取用户端信息
                var b = ua.indexOf("MSIE "); //检测特殊字符串"MSIE "的位置
                if (b >= 0) {
                        //截取版本号字符串,并转换为数值
                        v = (ua.substring(b + 5, ua.indexOf(";", b)));
                }
               
                if(b < 0 || parseFloat(v) < 8){
                        if(confirm('系统检测到您正在使用非IE8浏览器,为了保证你浏览效果,推荐您使用IE8运行本系统,请问是否下载安装包并升级?')){
                          window.location.href = "/ie8/IE8-WindowsXP-x86-CHS.exe";
                        }
                }
               
                document.form1.{focus_filed}.focus();
               
                return;
        }2.修改11行<body>
<body onload="javascript:checkIE();" scroll="auto">3.保存并关闭文件。
完成后代码截图:






cgft 发表于 2014-11-17 11:09:13

谢谢!
收藏了。

19831031 发表于 2014-12-18 10:17:33

本帖最后由 19831031 于 2014-12-18 10:19 编辑

现在大多都使用IE11了,这个代码检测IE11也提示低于IE8.因为IE11取消了MSIE信息,能否帮忙改一下。谢谢
下面的代码可以检测出IE11 。
<script type="text/javascript">
                                var userAgent = navigator.userAgent,
                                rMsie = /(msie\s|trident.*rv:)([\w.]+)/,
                                rFirefox = /(firefox)\/([\w.]+)/,
                                rOpera = /(opera).+version\/([\w.]+)/,
                                rChrome = /(chrome)\/([\w.]+)/,
                                rSafari = /version\/([\w.]+).*(safari)/;
                                var browser;
                                var version;
                                var ua = userAgent.toLowerCase();
                                function uaMatch(ua) {
                                        var match = rMsie.exec(ua);
                                        if (match != null) {
                                                return { browser : "IE", version : match || "0" };
                                        }
                                        var match = rFirefox.exec(ua);
                                        if (match != null) {
                                                return { browser : match || "", version : match || "0" };
                                        }
                                        var match = rOpera.exec(ua);
                                        if (match != null) {
                                                return { browser : match || "", version : match || "0" };
                                        }
                                        var match = rChrome.exec(ua);
                                        if (match != null) {
                                                return { browser : match || "", version : match || "0" };
                                        }
                                        var match = rSafari.exec(ua);
                                        if (match != null) {
                                                return { browser : match || "", version : match || "0" };
                                        }
                                        if (match != null) {
                                                return { browser : "", version : "0" };
                                        }
                                }
                                var browserMatch = uaMatch(userAgent.toLowerCase());
                                if (browserMatch.browser) {
                                        browser = browserMatch.browser;
                                        version = browserMatch.version;
                                }
                                document.write(browser+version);               
                                        </script>

19831031 发表于 2014-12-18 10:18:48

<script type="text/javascript">
                                var userAgent = navigator.userAgent,
                                rMsie = /(msie\s|trident.*rv:)([\w.]+)/,
                                rFirefox = /(firefox)\/([\w.]+)/,
                                rOpera = /(opera).+version\/([\w.]+)/,
                                rChrome = /(chrome)\/([\w.]+)/,
                                rSafari = /version\/([\w.]+).*(safari)/;
                                var browser;
                                var version;
                                var ua = userAgent.toLowerCase();
                                function uaMatch(ua) {
                                        var match = rMsie.exec(ua);
                                        if (match != null) {
                                                return { browser : "IE", version : match || "0" };
                                        }
                                        var match = rFirefox.exec(ua);
                                        if (match != null) {
                                                return { browser : match || "", version : match || "0" };
                                        }
                                        var match = rOpera.exec(ua);
                                        if (match != null) {
                                                return { browser : match || "", version : match || "0" };
                                        }
                                        var match = rChrome.exec(ua);
                                        if (match != null) {
                                                return { browser : match || "", version : match || "0" };
                                        }
                                        var match = rSafari.exec(ua);
                                        if (match != null) {
                                                return { browser : match || "", version : match || "0" };
                                        }
                                        if (match != null) {
                                                return { browser : "", version : "0" };
                                        }
                                }
                                var browserMatch = uaMatch(userAgent.toLowerCase());
                                if (browserMatch.browser) {
                                        browser = browserMatch.browser;
                                        version = browserMatch.version;
                                }
                                document.write(browser+version);               
                                        </script>

citc_darklg 发表于 2014-12-18 16:39:47

不错,收藏了。:handshake

sany217 发表于 2014-12-19 13:37:50

本帖最后由 sany217 于 2014-12-19 16:59 编辑

19831031 发表于 2014-12-18 10:17 static/image/common/back.gif
现在大多都使用IE11了,这个代码检测IE11也提示低于IE8.因为IE11取消了MSIE信息,能否帮忙改一下。谢谢
下 ...
IE8及以上版本均添加内核关键字“Trident”,则可以修改检测代码checkIE()函数如下:function checkIE(){
      var b = 0;
      var v = 0;
      var ua = navigator.userAgent;                                                         //获取用户浏览器UA信息
      
      if (ua.indexOf("Trident") < 0) {                                                //检测特殊字符串"Trident"的位置
                b = ua.indexOf("MSIE ");                                                         //检测特殊字符串"MSIE "的位置
                if (b >= 0) {
                        v = (ua.substring(b + 5, ua.indexOf(";", b)));      //截取版本号字符串,并转换为数值
                }
               
                if(b < 0 || parseFloat(v) < 8){
                        if(confirm('系统检测到您正在使用非IE8浏览器,为了保证你浏览效果,推荐您使用IE8运行本系统,请问是否下载安装包并升级?')){
                        window.location.href = "/ie8/IE8-WindowsXP-x86-CHS.exe";
                        }
                }
      }
      
      document.form1.PASSWORD.focus();
      
      return;
}
利用正则表达式判断略显复杂(主要降低了可读性),不过速度方面应该不错,且转换UA为小写提高了代码的健壮性。function checkIE(){
                        var rMsie = /(msie\s|trident.*rv:)([\w.]+)/;
                        var ua = navigator.userAgent.toLowerCase();
                        var match = rMsie.exec(ua);
                        if (match != null && parseFloat(match) >= 8) {
                              document.form1.PASSWORD.focus();
                              return;
                        }
                        
                        if(confirm('系统检测到您正在使用非IE8浏览器,为了保证你浏览效果,推荐您使用IE8运行本系统,请问是否下载安装包并升级?')){
                        window.location.href = "/ie8/IE8-WindowsXP-x86-CHS.exe";
                        }
                        document.form1.PASSWORD.focus();
                }
PS:IE8位置为 \webroot\ie8\IE8-WindowsXP-x86-CHS.exe



19831031 发表于 2014-12-19 16:59:27

sany217 发表于 2014-12-19 13:37 static/image/common/back.gif
IE8及以上版本均添加内核关键字“Trident”,则可以修改检测代码checkIE()函数如下:
利用正则表达式判断 ...

非常感谢

湖北通达OA总代 发表于 2015-1-13 23:54:38

sany217 发表于 2014-12-19 13:37
IE8及以上版本均添加内核关键字“Trident”,则可以修改检测代码checkIE()函数如下:
利用正则表达式判断 ...

嗯,学习了。伙计。

wenfu76 发表于 2015-5-21 06:07:09

这个想法不错,建议通达安装包中也提供这些东西,为用户提供方便。:)
页: [1]
查看完整版本: 通达OA 2013增强版IE8版本提醒