未捕获的ReferenceError:未定义WebKitPoint

时间:2014-11-20 13:01:53

标签: javascript google-chrome extjs sencha-touch

我使用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。我该如何模仿或替换它?

3 个答案:

答案 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
    }
};