我使用Sencha Touch 1.1.1
昨天当Google Chrome更新为39时,它已开始提供此错误
Uncaught ReferenceError: WebKitPoint is not defined
因为他们已经删除了WebKitPoint。 Sencha Touch的代码是WebKitPoint,位于http://cdn.sencha.io/touch/sencha-touch-1.1.1/sencha-touch.js第6行。是的。
getXY: function() {
var a = window.webkitConvertPointFromNodeToPage(this.dom, new WebKitPoint(0, 0));
return [a.x, a.y]
}
我认为WebKitPoint是某种函数对象{x:0,y:0}但是我无法创建/创建JavaScript代码所需的东西;我写了这个WebKitPoint = {x:0, y:0}
,但它再次出错,这次说它不是一个函数。
我也发现了这个:https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/pIbpN_8Lqpg
TL;博士 Google Chrome 39不再支持WebKitPoin。我该如何模仿或替换它?
答案 0 :(得分:13)
您可以尝试替换
var point = window.webkitConvertPointFromNodeToPage(this.dom, new WebKitPoint(0, 0));
return [point.x, point.y]
与
var rect = this.dom.getBoundingClientRect();
return [rect.left, rect.top];
来源:https://code.google.com/p/chromium/issues/detail?id=434976#c10
Code Credits:PhilipJägenstedt
答案 1 :(得分:3)
根据Ahmad的优秀答案,您也可以在脚本开头覆盖所有内容(在加载sencha-touch.js之前):
WebKitPoint = function(x,y) { };
window.webkitConvertPointFromNodeToPage = function(dom, unusedWebKitPoint) {
var rect = dom.getBoundingClientRect();
return [rect.left, rect.top];
};
答案 2 :(得分:2)
WebKitPoint = function(x,y) { };
window.webkitConvertPointFromNodeToPage = function(dom, unusedWebKitPoint) {
var rect = dom.getBoundingClientRect();
return {
'x': rect.left,
'y': rect.top
}
};