Javascript 捕获iframejQuery中的所有事件并复制

Javascript 捕获iframejQuery中的所有事件并复制,javascript,javascript-events,event-handling,jquery,Javascript,Javascript Events,Event Handling,Jquery,问题是: 我有一个iframe可以显示任何网页(不一定是我开发的)。 在这一页上可能有附加的事件(大概我不知道) 如何动态截取这些事件并存储它们以供以后复制 例如: 假设当鼠标移动到某个div上时,它会改变颜色。 我想确保当您触发将颜色更改为div的事件时,它已“注册”所有一系列信息,允许我(无需用户交互)在以后复制它 想法?对于录制和后续复制,请将事件处理程序添加到div中。作为你的例子,你可以使用 $('#div').mouseover(function(e) { ... }) 或 对于

问题是:

我有一个iframe可以显示任何网页(不一定是我开发的)。 在这一页上可能有附加的事件(大概我不知道)

如何动态截取这些事件并存储它们以供以后复制

例如: 假设当鼠标移动到某个div上时,它会改变颜色。 我想确保当您触发将颜色更改为div的事件时,它已“注册”所有一系列信息,允许我(无需用户交互)在以后复制它


想法?对于录制和后续复制,请将事件处理程序添加到div中。作为你的例子,你可以使用

$('#div').mouseover(function(e) { ... }) 


对于“复制”,您必须在某个对象中存储有关过去事件的信息。您甚至可以存储事件对象本身。

简短的回答是:您不能

如果页面上的“任意网页”的文档对象位于不同的域中,则无法使用JavaScript访问该对象,我假设如果您说“任意网页”,这是因为。您需要IFRAME中的网站与您的脚本配合才能实现这一点,这在“任何网页”中都不会发生

同一域上的IFRAME
如果您的网页位于同一个域中,那么您可以通过为每个要捕获的事件添加侦听器(如所述)来访问IFRAMEs body元素的事件。这对于所有与身体相关的事件都是可能的。因此,如果您有阻止向上冒泡到身体的事件,则此解决方案不会捕获它们

jQuery('#website body').on('click mouseover mouseout', function(event) {
    console.log(event.type);
});
假设您有一个id为
网站的IFRAME
,您可以通过上面用空格分隔的方式列出您想要的事件。示例捕获了
单击
鼠标悬停
鼠标悬停


也许这更接近您想要的?

如果iframed页面不在同一个域中,出于安全原因,浏览器需要阻止这一点。看起来您正在寻找一个自动化测试框架?不是真的,想法是同步站点中的UI;您是否找到了合理的答案?此解决方案假定我知道页面的元素,并且事件附加到它们;我在寻找一个通用的解决方案,一个“allEventListener”,好吧,让我们假设我在同一个域上这样做。我通过代理克服了同源策略,但这与本主题无关。我感兴趣的是如何做到这一点:如何拦截页面触发的事件,记录它们并在以后播放它们。无论如何,谢谢你的快速响应,谢谢,我在另一篇文章中读到了这样的解决方案,但这会为我添加到页面上每个元素的每个事件添加一个侦听器,对吗?更具体地说,我在寻找一些东西,使我能够识别页面上已经存在的事件并进行拦截。浏览时,我发现类似$(“#元素”).data(“事件”);但我找不到关于如何使用它的在线文档或具体示例:(您可以将数据存储到DOM元素。我怀疑它在您的情况下是否有用。
jQuery('#website body').on('click mouseover mouseout', function(event) {
    console.log(event.type);
});