Javascript 向iFrame中的项添加事件侦听器?
在整个iframe中给定一个带有Javascript 向iFrame中的项添加事件侦听器?,javascript,jquery,webkit,jquery-events,Javascript,Jquery,Webkit,Jquery Events,在整个iframe中给定一个带有的iframe 是否可以使用jQuery添加事件侦听器,以便在用户将鼠标从顶部/父窗口移到iframe中的.fineme上时触发警报?有关访问iframe内容文档的信息,请参阅 您的问题的解决方案可能是: $("iframe#name").contents().find(".fineme").bind("mouseover", function() { alert("Found me"); }); 是的,默认情况下,如果从父窗口运行选择器,它似乎不会在ifram
的iframe
是否可以使用jQuery添加事件侦听器,以便在用户将鼠标从顶部/父窗口移到iframe中的.fineme
上时触发警报?有关访问iframe内容文档的信息,请参阅
您的问题的解决方案可能是:
$("iframe#name").contents().find(".fineme").bind("mouseover", function() { alert("Found me"); });
是的,默认情况下,如果从父窗口运行选择器,它似乎不会在iframe中找到元素。但是,您可以显式地为jQuery提供上下文,以便查看iframe内部 一种方法是:
var iframe = $("#someIframeId");
$(".fineme",iframe.get(0).contentDocument).mouseover(function(){alert('hi')});
注意:只有当父站点和IFrame都在同一个域上时,此操作才有效。有关这方面的更多信息,请参阅:我遇到了类似的问题,并找到了一个适合我的解决方案。试试这个:
document.getElementById('iframe_id').contentWindow.$('.fineme').on( ... )
它适用于任何jquery函数,但侦听iFrame dom的jquery上的事件。适用于我。可能该类应该是
.findme
而不是.fineme
?您可能需要将其包装在检查中,以确保已加载iframe。如果您试图在iframe加载之前访问内容,您将无法找到它。使用$(“iframe#name”).load()将其包装为+1,以等待加载()-如果您以编程方式(例如通过srcdoc
)编写iframe内容,则似乎必须始终这样做。需要注意的一点是:要使其工作,iframe必须与页面位于同一域中。如果它们在不同的域上,我认为浏览器安全性会阻止这项工作。这对原生jQuery很好,但是jQuery UI对象呢?例如,如果在元素上调用Resizeable,它将不具有鼠标上下文。您必须单击可调整大小的控制柄,并将鼠标拖动到iframe外部,使其响应鼠标移动。