我有一个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插件可以确定给定的点是否在地图的区域内?(我已经看到了一些在多边形中找到一个点的函数.)
感谢您提供的任何见解!