Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iframe上的jQuery偏移量_Jquery - Fatal编程技术网

iframe上的jQuery偏移量

iframe上的jQuery偏移量,jquery,Jquery,我试图让jQuery offset在iframe上工作。我想获得鼠标单击相对于用户单击的iframe的位置 此代码用于IMG,但不用于IFRAME: // Not working $('iframe').click(function(e) { var offset_t = $(this).offset().top - $(window).scrollTop(); var offset_l = $(this).offset().left - $(window).scrollL

我试图让jQuery offset在iframe上工作。我想获得鼠标单击相对于用户单击的iframe的位置

此代码用于IMG,但不用于IFRAME:

// Not working
$('iframe').click(function(e)
{   
    var offset_t = $(this).offset().top - $(window).scrollTop();
    var offset_l = $(this).offset().left - $(window).scrollLeft();

    var left = Math.round( (e.clientX - offset_l) );
    var top = Math.round( (e.clientY - offset_t) );

    alert("Left: " + left + " Top: " + top);

});
我在中设置了一个代码示例


如何使其工作?

Iframe元素不允许单击之类的事件,但您可以在Iframe上创建div并对其应用单击功能,例如:

<div class="container">
  <iframe width="500" height="200" src="http://www.google.com"></iframe>
</div>
然后将click事件从iframe更改为.container

$('.container').click(function(e)
{   
    var offset_t = $(this).offset().top - $(window).scrollTop();
    var offset_l = $(this).offset().left - $(window).scrollLeft();

    var left = Math.round( (e.clientX - offset_l) );
    var top = Math.round( (e.clientY - offset_t) );

    alert("Left: " + left + " Top: " + top);
});
有问题吗?iframe将不可访问,但您可以使用Javascript管理它(从iframe中添加和删除指针事件样式)

更新


为了更好地解释答案,我添加了一个选项(控制按钮用于“启用”或“禁用”iframe)。

否。无法将单击事件绑定到iFrame,也就是说,除非它们的来源相同。谢谢!请更新如何使用指针事件使iframe可点击的答案。对不起,Rasmus,iframe无法使用事件。您只能在iframe上放置一个透明div,然后单击它以“模拟”您正在单击iframe。我举了一个例子,使用一个控制按钮来激活/停用iframe,可能是您需要的。看看这个;)
$('.container').click(function(e)
{   
    var offset_t = $(this).offset().top - $(window).scrollTop();
    var offset_l = $(this).offset().left - $(window).scrollLeft();

    var left = Math.round( (e.clientX - offset_l) );
    var top = Math.round( (e.clientY - offset_t) );

    alert("Left: " + left + " Top: " + top);
});