如何从跨域`iframe`维护外部拖动事件?

时间:2011-12-11 13:49:19

标签: mouseevent jquery drag mousemove

我开发了一个用于投影360°图像的jQuery插件,其中主要的交互方式是鼠标/触摸拖动。当图像在iframe内时,现在社区面临问题,在拖动图像时鼠标指针滑出iframe“框架相对容易,从而停止了帧锁定< strong> "mousemove""mouseup" 事件。 DOM事件根本不会在帧中冒泡。频繁的令人不快的结果是卡住了(在jsFiddle iframe $.unique( $(window).add(window.top) )内运行 - 支持用户界面就是最佳示例。

要围绕它进行路由,请使用[ window ]我根据具体情况绑定[ window, window.top ]iframe。而且效果很好。如果全部在同一个域中。

如果域名不同,Same Origin Policy将升级并阻止绑定到包含页面,从而导致安全错误,最终导致脚本失败。

假设上述情况,我的问题是:有没有办法从window.top.onmousemove =跨域抓听外部拖动事件?

尝试失败:

  • window.top.addEventListener("mousemove" ...
  • $( window.top ).bind("mousemove" ...
  • {{1}} ...

1 个答案:

答案 0 :(得分:1)

如果不是让最终用户嵌入iframe,您可以让它们包含一个js脚本文件,然后您可以从中编写iframe,并在父文档的领域中管理事件,与您并行iframe事件。然后,您可以通过服务器会话将事物传递回iframe(即,将脚本动态添加到修改用户会话的当前页面,从iframe中轮询更改)。这是一个完全不理想的情况......但它会使事情发挥作用,并让您访问父环境。它会因多个嵌入而变得混乱,但我认为这对于专家来说是额外的。