1

这是问题:

我有一个显示任何网页的 iframe(不一定由我开发)。此页面上可能附有事件(大概我不知道)。

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

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

想法?用于录制和后续复制

4

2 回答 2

2

简短的回答是:你不能

如果页面上的“任何网页”位于不同的域中,您将无法访问“任何网页”的文档对象,如果您说“任何网页”,我假设它是因为Same Origin Policy。您需要 IFRAME 中的网站与您的脚本配合才能实现这一点,而“任何网页”都不会发生这种情况。

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

jQuery('#website body').on('click mouseover mouseout', function(event) {
    console.log(event.type);
});

假设您有一个带有 id 的 IFRAME,website您可以通过将它们与上面的空格分开列出来捕获您希望的事件。该示例捕获click,mousovermouseout.

也许这更接近你想要的?

于 2012-12-08T19:17:11.410 回答
0

将事件处理程序添加到您的 div。对于您的示例,您可以使用

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

或者

('#div').on('mouseover', function(e) { ... })

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

于 2012-12-08T18:51:43.337 回答