Sencha TouchExt.Carousel 切换 Bug

xiaoxiao2021-02-28  105

没有什么比测试和工作的应用程序感到沮丧,只有打开它有一天,发现它... 不工作这是Sencha Touch开发人员最近会有的经验,因为最新的Chrome更新(Chrome 43)在Sencha Touch应用程序中造成了一些错误如果您尝试在Chrome浏览器中查看应用程序或Android设备上的最新系统Web视图,则会出现此问题。

当我在桌面电脑上加载Chrome中的一个Sencha Touch应用程序时,我首先注意到了这个问题,并且我的界面的可滚动部分丢失了。我必须滚动才能显示出来。开发人员报告了一系列问题,我相信我的应用程序还有更多的问题。

如何修复Chrome 43错误

那么当然,我转向Google。太久以前,我发现这个来自Mitchell Simoens的声明。他列出了Chrome 43所造成的问题,并列出了针对EXT JS和Sencha Touch的一些修复。Sencha Touch的修复特别是将以下内容添加到app.js(Ext.application()之前):

Ext.define('Override.util.PaintMonitor', { override : 'Ext.util.PaintMonitor', constructor : function(config) { return new Ext.util.paintmonitor.CssAnimation(config); } }); Ext.define('Override.util.SizeMonitor', { override : 'Ext.util.SizeMonitor', constructor : function(config) { var namespace = Ext.util.sizemonitor; if (Ext.browser.is.Firefox) { return new namespace.OverflowChange(config); } else if (Ext.browser.is.WebKit || Ext.browser.is.IE11) { return new namespace.Scroll(config); } else { return new namespace.Default(config); } } });

以及以下到您的app.scss文件来解决加载微调器不会旋转的问题:

@keyframes x-loading-spinner-rotate { 0%{ -ms-transform: rotate(0deg); transform: rotate(0deg); } 8.32%{ -ms-transform: rotate(0deg); transform: rotate(0deg); } 8.33%{ -ms-transform: rotate(30deg); transform: rotate(30deg); } 16.65%{ -ms-transform: rotate(30deg); transform: rotate(30deg); } 16.66%{ -ms-transform: rotate(60deg); transform: rotate(60deg); } 24.99%{ -ms-transform: rotate(60deg); transform: rotate(60deg); } 25%{ -ms-transform: rotate(90deg); transform: rotate(90deg); } 33.32%{ -ms-transform: rotate(90deg); transform: rotate(90deg); } 33.33%{ -ms-transform: rotate(120deg); transform: rotate(120deg); } 41.65%{ -ms-transform: rotate(120deg); transform: rotate(120deg); } 41.66%{ -ms-transform: rotate(150deg); transform: rotate(150deg); } 49.99%{ -ms-transform: rotate(150deg); transform: rotate(150deg); } 50%{ -ms-transform: rotate(180deg); transform: rotate(180deg); } 58.32%{ -ms-transform: rotate(180deg); transform: rotate(180deg); } 58.33%{ -ms-transform: rotate(210deg); transform: rotate(210deg); } 66.65%{ -ms-transform: rotate(210deg); transform: rotate(210deg); } 66.66%{ -ms-transform: rotate(240deg); transform: rotate(240deg); } 74.99%{ -ms-transform: rotate(240deg); transform: rotate(240deg); } 75%{ -ms-transform: rotate(270deg); transform: rotate(270deg); } 83.32%{ -ms-transform: rotate(270deg); transform: rotate(270deg); } 83.33%{ -ms-transform: rotate(300deg); transform: rotate(300deg); } 91.65%{ -ms-transform: rotate(300deg); transform: rotate(300deg); } 91.66%{ -ms-transform: rotate(330deg); transform: rotate(330deg); } 100%{ -ms-transform: rotate(330deg); transform: rotate(330deg); } }

实施这些修补程序后,似乎打破了我的iOS版本(也可能是本机Android版本,我从来没有尝试过)。我从来没有能够弄清楚为什么(因为没有发生错误),但是当我将这两个代码添加到我的应用程序中时,我的launch()函数永远不会被触发,这意味着我被永远地停留在闪屏上。

随着更多的挖掘,我发现这个解决方案从Lee Boonstra(谁也是一个Sencha员工),似乎做这个工作。对于这个解决方案的信誉也来到Trevor Brindle,他撰写了一篇关于这个错误的非常有用的博文。

而不是直接添加覆盖到app.js,我们将它们添加为实用程序文件,并在app.js中要求它们要实现此解决方案,您需要在名为util的文件夹中创建两个文件他们应该是这样的:

应用程序/ UTIL / PaintMonitor.js

Ext.define('MyApp.util.PaintMonitor', { override: 'Ext.util.PaintMonitor', uses: [ 'Ext.env.Browser', 'Ext.env.OS', 'Ext.util.paintmonitor.CssAnimation', 'Ext.util.paintmonitor.OverflowChange' ], constructor: function(config) { return new Ext.util.paintmonitor.CssAnimation(config); } }, function () { // console.info("Ext.util.PaintMonitor temp. fix is active"); // });

应用程序/ UTIL / SizeMonitor.js

Ext.define('MyApp.util.SizeMonitor', { override: 'Ext.util.SizeMonitor', uses: [ 'Ext.env.Browser', 'Ext.util.sizemonitor.Default', 'Ext.util.sizemonitor.Scroll', 'Ext.util.sizemonitor.OverflowChange' ], //Thanks! http://trevorbrindle.com/chrome-43-broke-sencha/ constructor: function (config) { var namespace = Ext.util.sizemonitor; if (Ext.browser.is.Firefox) { return new namespace.OverflowChange(config); } else if (Ext.browser.is.WebKit) { if (!Ext.browser.is.Silk && Ext.browser.engineVersion.gtEq('535') && !Ext.browser.engineVersion.ltEq('537.36')) { return new namespace.OverflowChange(config); } else { return new namespace.Scroll(config); } } else if (Ext.browser.is.IE11) { return new namespace.Scroll(config); } else { return new namespace.Scroll(config); } } }, function () { // console.info("Ext.util.SizeMonitor temp. fix is active"); // });

一旦创建了这些文件,您应该将它们添加到app.js顶部的require数组中

requires: [ 'Ext.MessageBox', 'MyApp.util.SizeMonitor', //TEMP fix, Chrome 43 bug 'MyApp.util.PaintMonitor' //TEMP fix, Chrome 43 bug ],
转载请注明原文地址: https://www.6miu.com/read-69297.html

最新回复(0)