在Web应用程序的页面上,用户离开文本字段后,继续出现加载屏幕/窗口小部件。
该应用程序正在使用1.6.0.3版。我查看了Prototype 1.7.3的最新版本,但没有找到该功能。
调用此方法时,我还测试了其他实例。如果没有用户输入,则小部件不会挂断。
此错误显示在Chrome开发人员工具的控制台中。
at E (framework.pack.js:1699)
at Function.stopObserving (framework.pack.js:1732)
at A.hide (ui.pack.js:13410)
at A.render (ui.pack.js:13591)
at A.updateChoices (ui.pack.js:13650)
at A.onComplete (ui.pack.js:13786)
at Object.oncomplete (framework.pack.js:76)
at framework.pack.js:2748
问题的具体方法似乎在Prototype.js文件中,该文件=>
if (element._prototypeEventID) return element._prototypeEventID[0];
arguments.callee.id = arguments.callee.id || 1;
return element._prototypeEventID = [++arguments.callee.id];
}
我希望加载完成后,加载小部件会消失,但仍在页面上。 Chrome开发人员工具的控制台也出现第二个错误:
validateFormCheck @ common.js:1031
答案 0 :(得分:0)
似乎在getEventID
警告/错误触发的地方调用了undefined
方法。
在版本1.6.0.3中,getEventID
仅在createWrapper
和stopObserving
中被调用,我看到stopObserving在您发布的调用堆栈中,因此我们继续进行讨论。
stopObserving()
需要1个必需参数和2个可选参数(element,eventName,handler),如果您仅将该元素传递给函数,它将对其进行查找,然后删除该元素附带的所有PrototypeJS观察者。如果您同时传递eventName和/或处理程序,stopObserving只会专门删除您告诉它的观察者。
话虽如此,如果在调用stopObserving
之前将元素从DOM中删除,则可能会导致您看到的错误。
2个可以起作用的修复程序
stopObserving()
上方的电话remove()
stopObserving()
的调用,看看页面的行为是否符合您的要求