`

解决extjs不能在android8.0上打开的问题

 
阅读更多

sencha extjs 6.5.3版本已解决此问题

原因

Android 8.0 的 浏览器 UserAgent 如下:

写道
Mozilla/5.0 (Linux; Android 8.0.0; Pixel C Build/OPR1.170623.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/62.0.3202.84 Safari/537.36

 Sencha Touch / ExtJS 6 的浏览器识别逻辑,把它认为了是 Opera 浏览器,因为 Sencha 的判断逻辑如下:

 

    if (userAgent.match(/FB/) && browserName === 'Other') {
        browserName = browserNames.safari;
        engineName = engineNames.webkit;
    }
    if (userAgent.match(/Android.*Chrome/g)) {
        browserName = 'ChromeMobile';
    }
    if (userAgent.match(/OPR/)) {
        browserName = 'Opera';
        browserMatch = userAgent.match(/OPR\/(\d+.\d+)/);
        browserVersion = new Ext.Version(browserMatch[1]);
    }

 需要修改成这样

 

 

    if (userAgent.match(/FB/) && browserName === 'Other') {
        browserName = browserNames.safari;
        engineName = engineNames.webkit;
    }
    if (userAgent.match(/Android.*Chrome/g)) {
        browserName = 'ChromeMobile';
    }
    // bug fix: Android Oreo Chrome Browser detected as Opera
    else {
        browserMatch = userAgent.match(/OPR\/(\d+.\d+)/);
        if (browserMatch) {
            browserName = 'Opera';
            browserVersion = new Ext.Version(browserMatch[1]);
        }
    }

 需要修改好几个文件

 

yourApp\ext\build\ext-all-debug.js
yourApp\ext\build\ext-modern-all-debug.js
yourApp\ext\packages\core\src\env\Browser.js

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics