2016-09-22 67 views
0

我试图绑定时形式的iframe内提交了envent,但我有一些问题:事件绑定,即使变更网址

第一次尝试:

我试图绑定envent当页面加载,它的工作,但事件只有当页面加载完全绑定。

$('#mainFrame').on("load", function() 
{ 

    $('#mainFrame').contents().find('form').submit(function(){ 

     $('#overlay').addClass("overlay"); 

    }); 
}); 

然后我试图使用现成事件

$('#mainFrame').ready(function() 
{ 

    $('#mainFrame').contents().find('form').submit(function(){ 

     $('#overlay').addClass("overlay"); 

    }); 
}); 

但是,当网址发生变化,也不会被调用。

第二次尝试:

我试图在iframe内的每个输入绑定事件,但我认为它不能访问没有.contents iframe元素()

$('#mainFrame').on("click", 'input',function(){ 


    $('#overlay').addClass("overlay"); 

}); 

PS : Iframe页面出自同一域名

有人可以帮助我吗?

+1

要访问iframe的内容,您必须等到它完全加载后,才能像第一个示例那样在加载时绑定事件。 – zer00ne

+0

某些页面太慢而无法完全加载所有资源,我需要类似.ready的东西来在dom加载后立即绑定事件 –

+0

不要依赖iframe来现场做好准备。您可以使用'.load()'或'.get()'在主页面的指定区域导入html,而不是使用iframe。如果您的内容非常庞大,您可能需要重新编写布局,以便将内容分成较小的部分以便按需加载。 – zer00ne

回答

0

这应该是一个评论,但我没有业力。抱歉垃圾邮件。

如果负载发生放慢你考虑从内部的iframe trigerring事件,也许添加该代码提交表单:

window.parent.jQuery(window.parent.document).trigger('iframestuff'); 

,并在父页面听吧:

$(document).on('iframestuff', function(){ 
}); 
+0

这是一个可能性,但我不是一个具有不同模板的至少2千页的程序,所以如果我可以在父页面中解决这个问题会更好 –