【问题标题】:Iframe with external URL, document click not working带有外部 URL 的 iframe,文档点击不起作用
【发布时间】:2015-06-15 10:08:07
【问题描述】:

我正在尝试让文档点击 iframe,但它似乎没有获取文档点击事件,所以我尝试显式生成 iframe 点击,它似乎与内部内容一起使用,但是当我放置外部 URL 时没有触发点击事件,

HTML

<iframe id="myframe" src="http://kooldotnet.blogspot.in/2013/07/image-resize.html"></iframe>

jQuery

$('#myframe').load(function(){
  $(this).contents().find("body").on('click', function(event) { alert('test'); });
});

Sample Code

请帮助我应该如何获得它

更新

当我在 jsfiddle 中尝试将 iram src 作为 www.google.com 时,它是 工作。

从@A 修改代码。狼

我得到了跟随小提琴

mouseenter working but not click

谢谢

【问题讨论】:

  • 可能的 CORS 问题?
  • 当我在 jsfiddle 中尝试将 iram src 作为 www.google.com 时,它正在工作。

标签: javascript jquery html iframe


【解决方案1】:

由于同源策略,您无法将事件绑定到跨域 iframe 的内容(如果 iframe 本身未明确处理)。

关于您的具体情况,将点击事件绑定到 iframe 的主体,您可以使用此解决方法:

$(focusWindow);

$('iframe').on('mouseenter', function () {
    window.targetedIframe = this;
    $(window).on('blur', iframeclicked);
}).on('mouseleave', function () {
    $(window).off('blur', iframeclicked);
    if($(document.activeElement).is('iframe'))
        focusWindow();
});

function iframeclicked(){
    console.log('iframe clicked', window.targetedIframe);
}

function focusWindow(){
    $('<div/>').attr('tabindex',-1).appendTo('body').focus().remove();
}

-jsFiddle-

【讨论】:

  • 请检查我的 jsfiddle -> jsfiddle.net/ttqy13nk/4 ,当我将 mouseenter 更改为单击时,为什么它没有被调用,谢谢
  • 因为你不能将点击事件绑定到 iframe 而是 mouseenter/mouseleave/(其他列表???)。这就是这个解决方法的目的,即使它并不完美:jsfiddle.net/ttqy13nk/6
  • 如果这是 iframe 的限制,那么为什么当我设置为 google.com 时会注册它的点击事件
猜你喜欢
  • 1970-01-01
  • 2019-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-10
  • 2016-10-07
  • 1970-01-01
相关资源
最近更新 更多