Javascript 如何使用svg制作iframe;聚焦的;

Javascript 如何使用svg制作iframe;聚焦的;,javascript,html,iframe,Javascript,Html,Iframe,我想检测iframe上的单击。方法是捕捉父窗口上的模糊事件。但当用户在iframe中单击svg时,它不会占据焦点,根窗口也不会丢失焦点。 当用户单击iframe中的任何内容时,是否有办法强制iframe聚焦?或者以任何其他方式检测单击 这里有两个例子。唯一的区别是iframe src url: 工作示例: 非工作示例: JS: HTML: 检测单击iframe 我提出的唯一可靠的解决方案是创建一个“overframe”,并在第一次单击时将其删除 $('.overframe')。单击(函数()

我想检测iframe上的单击。方法是捕捉父窗口上的模糊事件。但当用户在iframe中单击svg时,它不会占据焦点,根窗口也不会丢失焦点。 当用户单击iframe中的任何内容时,是否有办法强制iframe聚焦?或者以任何其他方式检测单击

这里有两个例子。唯一的区别是iframe src url:

工作示例:

非工作示例:

JS:

HTML:


检测单击iframe

我提出的唯一可靠的解决方案是创建一个“overframe”,并在第一次单击时将其删除

$('.overframe')。单击(函数(){
警报('iframe click');
这个。删除();
});
iframe{
边框:1px实心#666;
}
.包装纸{
位置:相对位置;
}
.overframe,iframe{
宽度:400px;高度:300px;
}
.框架{
背景:rgba(255255,0.2);
位置:绝对位置;
顶部:0;左侧:0;
边框:1px实心#333;
}


我认为您仍然可以检测到svg元素上的点击。在那里的某个地方有一个
stopPropagation
?如果是这样,请尝试在捕获阶段捕获单击事件(而不是进入冒泡阶段)。我无权访问iframe的内容。我需要一个通用的解决方案,它可以检测到iframe内部的点击,我认为这并不重要。查看是否仍发生单击事件(在捕获阶段)。我应该在哪里等待单击事件?在iframe元素上,它从不发生。在svg元素上,我甚至无法订阅事件,因为它是iframe中显示的网页内容。建议的答案只有在单击iframe离开页面时才有效。在这种情况下,将调用onunload函数,使用overIframe集,我们可以假设我们位于导致onunload的iFrame之上。在这种情况下,iframe不会导致onunload或模糊,因此不可能可靠地检测到它
  $(document).ready(function() {
      var overiFrame = false;
      $('iframe').hover(function() {
          overiFrame = true;
          $(window).focus();
      }, function() {
          overiFrame = false;
      });
      $(window).blur(function() {
          if (overiFrame) {
              alert("it works!");
          }
      });
  });
  <body>
    <h1> Detect click on iframe </h1>
    <iframe src="http://phet.colorado.edu/sims/html/forces-and-motion-basics/latest/forces-and-motion-basics_en.html"></iframe>
  </body>