在iframe上滑动,传递单击事件,elementFromPoint在imagemap区域返回null

 mobiledu2502860153 发布于 2023-01-31 14:43

我有一个html文档,其中包含3个表示上一页,当前页和下一页的iframe.我正在尝试启用页面滑动(通过jquery touchswipe插件),但也让点击进入iframe内的文档.这是HTML:


    

刷页面包装元素时,上一页或下一页成为活动页面.页面大小为100%,活动页面填充浏览器的视口.一切都在同一个领域内.iframe的文档可以包含带有图像映射的图像.

不幸的是,iframe捕获鼠标事件,禁用父页面上的滑动功能.正如其他人所建议的那样,答案是覆盖透明div,使用elementFromPoint在iframe的文档中定位目标,并手动将click事件分派给目标.

我使用coverIframes插件实现了这个:

$.fn.coverIframes = function(){
    $.each($("iframe",this),function(i,v){
        var ifr = $(v);
        var wr = $("
"); ifr.before(wr); wr.height(ifr.height()); wr.click(function(event){ var iframe = ifr.get(0); var iframeDoc = (iframe.contentDocument) ? iframe.contentDocument : iframe.contentWindow.document; // Find click position (coordinates) var x = event.offsetX; var y = event.offsetY; // Trigger click inside iframe var link = iframeDoc.elementFromPoint(x, y); var newEvent = iframeDoc.createEvent('HTMLEvents'); newEvent.initEvent('click', true, true); link.dispatchEvent(newEvent); }); }) };

虽然这种方法适用于大多数元素,但对于图像映射的区域却没有这样做 - 至少在Chrome浏览器中(版本32).在这些实例中,它返回null.在尝试找到解决方法时,我想到了以下三个问题:

    有没有办法将父项中的单击事件直接传递给iframe窗口,并让它像处理用户单击窗口一样处理事件?(即窗口找到目标,并通过dom的元素向上冒泡.)

    是否有任何类似于elementFromPoint的替代函数可靠地返回目标元素?

    如果我想在一个区域上手动处理null结果,是否有一个现有的javascript函数或jquery插件可以确定给定的点是否在地图的区域内?(我已经看到了一些在多边形中找到一个点的函数.)

感谢您提供的任何见解!

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有