我在这个脚本中有很多函数,但是其中一个函数没有被调用,尽管这两个函数相互了解(不是范围问题)并且事件侦听器正在触发。
我有一个
input
range element
onchange event on input type=range is not triggering in firefox while dragging
我的代码是这样的:
function initZoom() {
var self = this,
wrap = self.elements.zoomerWrap = document.createElement('div'),
zoomer = self.elements.zoomer = document.createElement('input');
self.elements.viewBox.insertAdjacentElement('afterend',wrap);
wrap.appendChild(zoomer);
function change() {
console.log("Fire Before On Zoom!");
onZoom.call(self, {
value: parseFloat(zoomer.value),
origin: new TransformOrigin(self.elements.img),
viewportRect: self.elements.enclosedCrop.getBoundingClientRect(),
transform: Transform.parse(self.elements.img)
});
}
self.elements.zoomer.addEventListener('input', change); // this is being fired twice on keypress
self.elements.zoomer.addEventListener('change', change);
}
如你所见,我有两个要素(
wrap
zoomer
)添加到DOM。这是有效的,我还有两个事件侦听器,它们也在工作。也就是说,当我操作范围输入时
Fire Before On Zoom!
但是,我的
onZoom
打电话好像从来都不打火。我这里有:
function onZoom(ui) {
console.log("Fire Before Apply CSS!");
}
那个
console.log()
永远不要打印到控制台,该函数中的进一步代码永远不会执行。如果我把第一个
控制台.log()
在后面
onZoom.call()
也没有指纹。如果我加上
, onZoom
到
console.log("Fire Before On Zoom!")
放大
所以它知道它存在。。。
onZoom.call()