HTML object引入SVG阻塞window点击事件监听的解决方法
问题背景
在HTML中通过<object>标签引入外部SVG文件,实现代码如下:
<object data="mySVG.svg" type="image/svg+xml" id="circle"> <img src="mySVG.svg" /> </object>
为整个页面绑定window层级的点击事件监听器,代码如下:
window.addEventListener('click', function(){ alert('Hello') })
问题表现
实际运行时存在事件阻塞问题:
- 点击
<object>渲染的SVG区域时,全局点击事件不会触发,alert无法弹出 - 点击页面其他位置或其他普通DOM元素时,事件可正常触发
- 尝试等待
<object>元素加载完成后再绑定事件监听器,方案无效
已验证不可行的替代方案
- 内联SVG:直接使用
<svg>标签内联写入SVG内容可以正常触发事件,但SVG文件体积较大,内联会导致HTML代码冗余度过高 <img>标签引入SVG:无法满足后续业务逻辑中通过JS与SVG内部元素交互的需求
复现表现:点击SVG渲染区域外可正常触发事件,点击SVG内部区域无法触发。
待解决问题
如何配置才能让<object>元素和其他普通DOM元素表现一致,不阻塞全局事件监听器?
内容的提问来源于stack exchange,提问作者Filip
相关产品推荐
相关产品推荐

