繁体   English   中英

无法将mousedown事件附加到embed元素

[英]Can't attach mousedown event to embed element

我好像用这个垃圾碰到了墙,无法理解它。 我有一个页面,其中包含一个相对复杂的SVG(其中嵌入了6个其他小的SVG),嵌入在embed标签内。 当我尝试将mousedown事件附加到它时,它根本不起作用。 这是标记:

<body>
<embed type="image/svg+xml" src="images/cog.svg" id="cog">
</embed>
</body>

然后在javascript我做

$(function(){  
  var cog = document.getElementById("cog");
  document.addEventListener('mousedown', function(e){
    console.log(e);
  });
});

它不起作用。 此外,当我将事件附加到document ,当我点击该嵌入对象时它们也不会触发! 我搜索了这个东西3个小时,到处都是我看起来好像嵌入应该支持mousedown即使没有任何问题。 这里有什么问题? 编辑:如果这里的任何帮助是完整标记的样子(我使用Foundation框架): 在此输入图像描述

如果CORS不是问题,您可以尝试:

document.querySelector('embed').addEventListener('load', function(){
    this.getSVGDocument().addEventListener('mousedown', function(){
        alert('hello')});
        });

根据规格

3。 如果上一步确定内容的类型是image/svg+xml ,则运行以下子步骤:

  1. 如果embed元素未与嵌套浏览上下文相关联,请将该元素与新创建的嵌套浏览上下文相关联,[...]

  2. 将嵌套的浏览上下文导航到获取的资源, 启用替换 ,并将embed元素的节点文档浏览上下文作为源浏览上下文 (如果浏览上下文进一步导航到其他位置,则不会更新embed元素的src属性。)

  3. embed元素现在表示其关联的嵌套浏览上下文

但我找不到任何关于它应该如何处理事件的事情。

然而,似乎当它的src被设置并返回一些东西时,事件被新的上下文捕获(无论是到达还是创建)。

如果没有设置src,请参阅@Marius注释 ,它会触发事件。

我认为embed标签是沙盒的,不能从外部源访问。 只需使用img标签。

 $('#logo').click(function() { alert('410'); }); 
 img{ width: 200px; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <h3>Click the SVG</h3> <img id='logo' src="http://dev.w3.org/SVG/tools/svgweb/samples/svg-files/410.svg"> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM