为什么不是't html<对象>元素响应鼠标事件
Why isn't html <object> element responding to mouse events?
我有一个HTML <object>
元素,用于显示SVG图像(type="image/svg+xml"
)我正在尝试禁用此<object>
元素上的右键单击菜单,但它似乎没有监听鼠标事件。
我对div
也做了同样的操作,它正在工作。
JSFIDDLE此处
有什么线索可以通过Javascript/jQuery/CSS处理这个问题吗?请注意,我必须使用<object>
来显示SVG。
我的代码:
var url = "https://css-tricks.com/wp-content/uploads/2015/05/kiwi.svg";
var svg = document.createElement("object");
svg.setAttribute("id", "svg1");
svg.setAttribute("type","image/svg+xml");
svg.setAttribute("data",url);
document.body.appendChild(svg)
//not responding
svg.addEventListener("contextmenu", function(event) {
event.preventDefault();
alert('Right-click captured!')
});
//working just fine
var div = document.getElementById("div1");
div.addEventListener("contextmenu", function(event) {
event.preventDefault();
alert('Right-click captured!')
})
据我所知,<object>
元素不是"交互式内容",因此不是可点击的区域。MDN建议使用usemap
属性和<map>
标记,但我使用您提供的JS Fiddle在这种方法中并不成功。
以下是我的建议:创建一个覆盖你的svg对象的形状(在这种情况下,我只是在整个页面上拉伸一个<div>
)。然后,捕获并禁用contextmenu
事件:
<object type="image/svg+xml" data="https://css-tricks.com/wp-content/uploads/2015/05/kiwi.svg"></object>
<div style="position:absolute;top:0;left:0;bottom:0;right:0;" oncontextmenu="return false;"></div>
相关文章:
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- 如何首先设置样式<td>表中包含在窗体中的元素
- 如何附加<ul><李>元素位于某个特定条件的父元素列表之间
- 在验证器中添加自定义规则以检查<ul>具有元素
- 调整<音频>元素
- <的自定义进度条;音频>并且<进度>HTML5元素
- 转换<a>使用jQuery将文本字符串转换为dom元素
- react-让一个元素返回两个相邻的<tr>标签
- <h1>标签在离子含量元素中不可见
- 更改<td>更改事件的元素值
- 为什么不是't html<对象>元素响应鼠标事件
- 更改每个<李>元素在<ol>
- 点击<选择>元素,但不在<选项>
- Jquery将css类添加到父级<ul>元素
- jQuery对嵌套在<李>并且<a>元素,同时离开父<ul>打开
- 单击事件在替换<使用>元素在<svg>(Win7/IE11)
- 将换行符写入<span>元素
- 如何正确地获得<i><p>元素
- HTML5<视频>元素在Firefox、Opera和Safari中不起作用
- 我正试图动态地拉动<h3>元素,并将它们放在选择列表中