1

我有一个使用 SproutCore 构建的应用程序,最近几个 Windows 7 用户报告说鼠标点击(按钮、单选按钮等)在最新的 Chrome 或 Firefox 浏览器上根本不起作用。

在尝试了几台 Windows 7 计算机后,我终于找到了一台可以重现该问题的计算机。不仅如此,我还发现这个问题在 SproutCore 官方演示网站http://showcase.sproutcore.comhttp://demo.sproutcore.com上很明显。后者运行的是旧版本的 SC,而前者运行的是 SproutCore 1.10.0。

在演示站点上,需要单击鼠标的控件都不起作用。主演示选择器使用滚轮滚动,但无法选择任何内容。在http://demo.sproutcore.com/sample_controls/无法单击选项卡。在http://showcase.sproutcore.com/#ui/SC.ButtonView按钮没有响应,等等等等。

这可以在我的计算机和我的两个用户的计算机上复制,同时使用 Chrome 和 Firefox,但 IE 10 和 Opera 可以。其中一台计算机运行的是 Windows 7 Ultimate SP 1,另外两台运行的是 Windows 7 Professional SP 1。我测试过的大多数其他 Windows 7 机器都没有显示错误,所以我意识到这将非常困难调试。

在我的应用程序上,如果我获得对按钮视图的引用并运行

SC.run(function() { 
    view.triggerAction("mousedown");
});

该按钮确实单击。所以不知何故,点击没有正确触发该事件。

有没有其他人经历过这个和/或知道解决方案?


编辑:环顾使用 SproutCore 的其他站点,我发现http://www.bong.tv/顶部的 SC 按钮不起作用,但演示站点http://tasks.sproutcore.com/tasks 确实有效。我还没有弄清楚任务按钮有什么不同(也没有弄清楚它使用什么版本的 SC)。

4

1 回答 1

1

好的,听起来我们可以将其推广为官方答案。这是 SproutCore 中的一个已知错误(参见此处)。问题是 SC 长期以来对触摸和点击行为的分离,以及当前所有实际触摸检测的完全不可靠性(与检测 API 的存在相对)。我们正在研究解决方案。同时,最好的(部分总破解)解决方案似乎是检测 SC.browser.os === "windows" 和 SC.browser.osVersion 的 "6.2" (win8) 或 "6.1" (win7) ,并在项目的 core.js 顶部手动设置 SC.platform.touch = NO。这将为您的 Win7 和 Win8-with-mouse 用户解决问题,但我相信会为您的 Win8-on-tablet 用户解决问题。

同样,绝对不是最佳的,我们将尝试为版本 1.10.1 进行修复或破解。

于 2013-09-30T21:20:56.833 回答