[英]Detect hover on iframe from different domain
我将iframe加载到父页面中。 该页面和iframe托管在不同的域中。 我的iframe骨架看起来像这样: http : //cl.ly/image/44090J0H2S3Y
我正在尝试从外部将文件拖放到iframe中。 出于安全原因,浏览器不会将拖放事件转发到从其他域加载的iframe。 当前,我正在通过在整个iframe上放置一个透明div并将javascript“ drop”事件捕获到透明div上,然后使用iframe.postMessage将消息发送到iframe来解决此问题。 在iframe上,我有一些JavaScript可以监听消息,并采取适当的措施将其上传到我的服务器。
这一切都很好。 我要实现以下内容:
我可以在每个蓝色项目上放置一个单独的透明div,但问题是滚动条等可以包含任意数量的蓝色项目。我不确定如何实现这一点。 谢谢你的帮助!
您的拖放操作是如何实现的? HTML5拖放还是基于DOM? 从描述中我怀疑您正在使用基于DOM的拖放
由于浏览器的限制,如果将iframe托管在另一个域上,则无法对其进行读/写操作。 它可能不会给您带来理想的效果,但是HTML5拖放对于在iframe和窗口之间进行拖动要好得多。 但是同样,您不能从源文档代码向放置目标添加样式。
尝试这个:
如果您有权访问目标文档的域,则可以在“突出显示的蓝色项目”上实现放置区域
我将通过这样的方法创建透明的div:
var blueItemContainer = document.getElementById('blueItemContainer');
var blueItems = blueItemContainer.childNodes;
blueItemContainer.style.position = "relative";
for(var i = 0; i < blueItems.length; i++)
{
var transparentDiv = document.createElement('div');
transparentDiv.style.height = blueItems[i].style.height;
transparentDiv.style.width = blueItems[i].style.width;
transparentDiv.style.position = "absolute";
transparentDiv.style.left = blueItems[i].offsetLeft;
transparentDiv.style.top = blueItems[i].offsetTop;
blueItemContainer.appendChild(transparentDiv);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.