Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript onmouseup事件未按预期触发_Javascript_Google Chrome_Javascript Events - Fatal编程技术网

Javascript onmouseup事件未按预期触发

Javascript onmouseup事件未按预期触发,javascript,google-chrome,javascript-events,Javascript,Google Chrome,Javascript Events,我正在开发一个tilemap构造函数应用程序,它使用类似于绘画的功能来选择一个tile(来自图像元素的src),并使用mouseup和mousedown事件处理程序来绘制它 无论出于何种原因,mouseup事件未按预期触发。我已经了解到,如果mousemove处于活动状态,则mouseup将不会触发,并且我正在mousemove和mousedown上运行preventDefault功能。这似乎只有在我没有选择磁贴时才起作用 以下是我的事件处理程序函数: function setTilemapMo

我正在开发一个tilemap构造函数应用程序,它使用类似于绘画的功能来选择一个tile(来自图像元素的src),并使用
mouseup
mousedown
事件处理程序来绘制它

无论出于何种原因,
mouseup
事件未按预期触发。我已经了解到,如果
mousemove
处于活动状态,则
mouseup
将不会触发,并且我正在
mousemove
mousedown
上运行
preventDefault
功能。这似乎只有在我没有选择磁贴时才起作用

以下是我的事件处理程序函数:

function setTilemapMouseEvents() {
    var tilemap = document.getElementById('tilemap');

    tilemap.addEventListener('mousedown', function(e) {
        window.mouseDown = true;
        e.preventDefault();
    });

    tilemap.addEventListener('mousemove', function(e) {
        e.preventDefault();
    });

    window.addEventListener('mouseup', function() {
        window.mouseDown = false;
    });
}
element.innerHTML = '<img src="' + window.selectedTile.image + '" class="tilemap-tile"/>';
我的磁贴选择功能:

function TilesetTile(options) {
    this.image = options.image;
    this.symbol = options.symbol;
}

function selectTile(element) {
    var selectedTile = document.getElementsByClassName('selected')[0];
    if (selectedTile !== undefined) {
        selectedTile.classList = 'tileset-tile';
    }
    element.classList += ' selected';
    window.selectedTile = new TilesetTile({image: element.src});
}
以及我的绘画功能(由瓷砖元素上的
onmouseover
事件调用):

功能画片(元素){
如果(window.mouseDown&&window.selectedfile){
element.innerHTML='';
}
}

我认为这可能是Chrome特有的问题。我很快就在Safari上试用过,效果似乎很好。了解是什么导致了这种情况会很有帮助。

好的,所以我仍然不知道是什么导致了这种行为,但我能够将其隔离到
paintTile
函数的第三行:

function setTilemapMouseEvents() {
    var tilemap = document.getElementById('tilemap');

    tilemap.addEventListener('mousedown', function(e) {
        window.mouseDown = true;
        e.preventDefault();
    });

    tilemap.addEventListener('mousemove', function(e) {
        e.preventDefault();
    });

    window.addEventListener('mouseup', function() {
        window.mouseDown = false;
    });
}
element.innerHTML = '<img src="' + window.selectedTile.image + '" class="tilemap-tile"/>';
所以我的问题解决了,但我仍然有兴趣知道是什么导致了这种行为。如果你有任何想法,请发表评论。谢谢