用户与IFrame进行交互时检测到JavaScript

问题描述:

我发现了很多关于此的帖子,但我仍然没有找到解决方案。用户与IFrame进行交互时检测到JavaScript

我试图检测用户在做IFrame上的东西。例如,鼠标移动或按键。我的IFrame与显示IFrame的网站不同。

如何在IFrame上检测鼠标移动或按键,这是不同的域?

感谢

+1

如果可能的话,什么会阻止恶意网站显示,例如iframe中的yahoo登录页面,并读取密码字段中的所有按键? – 2014-11-03 22:37:40

+0

是的,我明白你在说什么。 – kat1330 2014-11-03 23:15:16

+0

但是可以在另一个可以允许CORS的网站上进行一些配置吗?因为我拥有子域网站。 – kat1330 2014-11-03 23:20:51

您可以事件挂钩到像任何其他元素的IFrame - 例如$('#my_iframe').mouseover(function(){ alert('over!'); });会每当用户将鼠标移动到iframe上时,都会触发

但是这没有用,真的。如果要捕获帧的内容上发生的事件,则无法执行此操作。例如$('#my_frame').contents().mouseover(function(){ alert('moved!'); });将无法​​正常工作。

这是因为Same Origin Policy,而且没有办法!

+0

感谢您的信息。所以你的意思是,如果是不同的域我不能发送JS事件从孩子到父窗口? – kat1330 2014-11-03 22:44:59

+0

那么,如果你可以控制框架所指向的页面,则可以在_that_页面上添加监听器,该监听器将触发。如果你无法控制框架中加载的页面,那么你的运气不好。 – 2014-11-05 14:10:23

我已经使用成功“的” .. ALA ..

警告:这会注意到在IFRAME容器坐在页面上的变更。因为,父页面会有这方面的知识。这不会捕获从单独的iframe或其中的页面发出的事件,不受父母控制。

$("iframe").on("mouseover focus",function(){ 
    // do your stuff 
}); 

如果你想只在一个iframe行为具有一定的来源,则是这样的:

var usedSrc = /facebook|twitter/; 

    $('iframe').on('mouseover focus', 
     function() { 
      if(usedSrc.test($(this).attr('src'))){ 
       // do your stuff 
      } 
     } 
    );​ 
+1

注意:这是在侦听事件iframe容器,它不会捕获源自实际iframe的事件,如同op请求。 – levi 2014-11-03 22:29:20

+0

正确。让我更新以重申这一点。谢谢。 – 2014-11-03 22:30:12

+0

感谢这篇文章。但我已经尝试使用鼠标悬停并且不适用于我,因为它仅在用户将鼠标从父页面移动到IFrame时才起作用。如果用户只关注IFrame并只在IFrame中移动鼠标,则此事件不会发生。 – kat1330 2014-11-03 22:33:38