javascript - 委托(delegate)点击 Canvas 到图像映射

标签 javascript jquery html html5-canvas dom-events

JSFiddle:http://jsfiddle.net/6WMXh/170/

我有一个覆盖网页的带有雪花效果的 Canvas ,我想将 Canvas 上的点击委托(delegate)给其下方要点击的元素。

此脚本适用于其他对象,但在某些浏览器中的图像映射(带有 AREA 标记)上失败。

适用于:IE10、Chrome;
失败:FF、Safari。

    // delegate click through canvas to page
    canvas.addEventListener('click', function(event) {
        event = event || window.event;
        canvas.style.zIndex = "0";
        target = document.elementFromPoint(event.clientX, event.clientY);
        if (target.click) {
            target.click();
        } else {
            target.onclick();
        }
        canvas.style.zIndex = "1000000";
    }, false);

请参阅 JSFiddle 以获取该问题的演示。当您单击未与 Canvas 重叠的 map 时,AREA 元素的 onclick 函数将被触发。但是,当您单击 Canvas 覆盖的 map 部分时,它不会在指定的浏览器中触发 onclick 函数。用IE10/Chrome尝试JSFiddle:没有问题,用FireFox/Safari尝试看看问题。

出了什么问题?

最佳答案

您可以使用 CSS 指针事件:none 让 Canvas 停止监听鼠标事件;

// CSS

#canvasObj {
    pointer-events: none;
}

关于javascript - 委托(delegate)点击 Canvas 到图像映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20668544/

相关文章:

javascript - 在JS中将以下日期格式化为YYYY-mm-dd

javascript - 第一次进入页面时,Reactjs 在 jquery/ajax 响应后不会重新渲染

html - 我如何调整这些跨度以使图片不会超出它们?

javascript - 如何使用 JavaScript 和 HTML 按钮在 iframe 中打开不同的 URL

javascript - 从 JavaScript 获取 SVG 文件作为字符串

java - 在 MySQL 数据库中检索非英文字符插入值

javascript - Fetch -API 返回 HTML 而不是 JSON

javascript - 如何将 Mapbox Geocoder 结果地点/国家/地区文本名称获取到 JavaScript 函数中?

javascript - 在没有地址栏的 Android 上打开链接

javascript - jQuery 和 CSS 下拉菜单无法正确堆叠和定位