我在同一个域的html页面中有两个iframe
<body>
<table border="1" width="100%" height="100%">
<tr>
<th><iframe class="isiframe" width="100%" height="100%" src="/example"></iframe></th>
<th><iframe class="isiframe" width="100%" height="100%" src="/example"></iframe></th>
</tr>
</table>
</body>
我已经为iframe内的网页中的所有标记提供了点击事件
$('a').bind('click', function(e){
var path = $(this).getPath();
var ahash={
'path':path
};
if (getFrameElement())
window.parent.document.Aaddevent(e, ahash);
});
点击事件中的“路径”给出了点击标签的路径(例如,html&gt; body&gt; div#bar&gt; ul#abc.def.ghi&gt; li#foo)。 getFrameElement()返回单击的框架。现在我想要做的是使用此路径并触发其他iframe中的click事件
我已定义了sendevent函数,其他iframe获取父iframe的事件,并触发与parent相同的事件并进行同步。
document.sendevent=function(e, ahash){
var iframes= parent.document.getElementsByTagName('iframe');
for (var i= iframes.length; i--;) {
var iframe= iframes[i];
if(iframe){
$(ahash.path).trigger('click');
}
}
};
我想这样做并使iframe工作,按照父iframe点击元素的路径,然后触发click事件以使其他iframe使用路径与父iframe同步
在sendevent函数中没有触发click事件,但是当我在sendevent函数中执行console.log(ahash .path)时,我得到了父iframe点击元素的路径。我怎样才能使这种方法起作用或类似的东西。请建议我解决方法如何做到这一点。
答案 0 :(得分:0)
您无法使用$("a").trigger("click")
关注链接。您可以使用location.href = $("a").attr("href")
。如果您只想尝试导航到两个帧中的相同网址,请不要打扰.getPath()
,只需传递href
即可。在您的父页面中,使用它来绑定第一帧中的链接以导航第二帧:
$("iframe:first").contents().find("a[href]").click(function() {
$("iframe:last", top.document)[0].contentWindow.location.href = this.href;
});
编辑:在IE和更新版本的FireFox和Opera中,您可以使用本机DOM方法.click()
来模拟链接上的实际点击。 Chrome目前尚不支持,但最终可能会支持。要使用.getPath()
查找并单击该链接,请在父页面中尝试:
$("iframe:first").load(function() {
$(this).contents().find("a[href]").click(function() {
$("iframe:last", top.document).contents().find($(this.getPath())[0].click();
});
});