我正在使用類似畫圖功能的tilemap構造函數應用程序從圖像元素中選擇一個圖塊(src)並使用mouseup
和mousedown
事件處理程序對其進行繪製。Javascript onmouseup事件沒有按預期發射
無論出於何種原因,mouseup
事件未按預期發射。我讀過mouseup
將不會觸發,如果mousemove
處於活動狀態,並且我正在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;
});
}
我的瓷磚選擇功能:
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
事件):
function paintTile(element) {
if (window.mouseDown && window.selectedTile) {
element.innerHTML = '<img src="' + window.selectedTile.image + '" class="tilemap-tile"/>';
}
}
我認爲這可能是一個Chrome特定的問題。我真的很快在Safari上試了它,它似乎工作正常。任何有關導致這種情況的見解都會有所幫助。