Javascript 为什么可以';你不是在一个iframe里抓到老鼠吗? 更新:
这似乎是Chrome(可能还有我的代码)中的一个bug,因为它在Firefox中工作Javascript 为什么可以';你不是在一个iframe里抓到老鼠吗? 更新:,javascript,html,iframe,Javascript,Html,Iframe,这似乎是Chrome(可能还有我的代码)中的一个bug,因为它在Firefox中工作 | top window | iframe | Google Maps --------+------------+----------+-------------- Firefox | Good | Good | Good --------+------------+----------+-------------- Chrome | Good |
| top window | iframe | Google Maps
--------+------------+----------+--------------
Firefox | Good | Good | Good
--------+------------+----------+--------------
Chrome | Good | Bad | Bad
--------+------------+----------+--------------
Safari | Good | Bad | Good
--------+------------+----------+--------------
不确定Google Maps如何解决Safari中的问题,下面代码段中的代码没有解决这个问题
。明星尝试引起一些注意(或者在下面发布一个解决方案?)
原始问题
浏览器不允许在iframe中捕获鼠标有什么具体原因吗
注意:我所说的“捕获鼠标”是指当用户单击(mousedown)某个元素时,您希望跟随鼠标直到他们松开鼠标
在顶级窗口(不是iframe)中,您可以这样做
const elem=document.querySelector(“#elem”);
const info=document.querySelector(“#info”);
元素addEventListener('mousedown',handleMouseDown,true);
功能手柄向下(e){
e、 预防默认值();
e、 停止传播();
document.addEventListener('mousemove',handleMouseMove,true);
文件。addEventListener('mouseup',RemoveMouseListener,true);
info.textContent=`listeners added`;
}
功能手柄移动(e){
e、 预防默认值();
info.textContent=`${e.clientX},${e.clientY}`;
}
函数移除鼠标侦听器(e){
document.removeEventListener('mousemove',handleMouseMove,true);
document.removeEventListener('mouseup',removeemouselisteners,true);
info.textContent='listeners removed';
}
#elem{背景:红色;填充:1em;}
在窗口外单击并拖动
Firefox仍在发送它。Safari没有:将不得不检查将不得不检查Webkit来源?叹气。。。。iframe中的谷歌地图可以在Safari中使用,但不能在Chrome中使用。Safari没有发送带有上述代码的消息,但很明显Google Maps找到了一个解决方案,您对iframe内容和主文档有多大的控制?还注意到,即使浏览器的窗口失去焦点,他们也会发送事件。。。如果您在框架的BBox上。