У меня есть страница с iframe. В фрейме есть кнопка отправки. Когда я нажимаю кнопку отправки, я хочу обновить родительское окно. Это то, что я сделал до сих пор, и это работает (javascript находится в родительском окне):

var myFrame = $('iframe'); myFrame.load(function() { myFrame.contents().find('#publish').click(function() { myFrame.load(function() { location.reload(); }); }); }); 

Код работает. Но я считаю, что перезагрузка iframe не нужна. Есть ли лучший способ определить, когда «отправить» завершено?

(Я не могу перезагрузить страницу только «onclick» или ретранслировать при любой задержке. Я должен быть уверен, что отправка формы завершена)

Предполагая, что publish уникальна, вы можете просто сделать это:

 $(document).ready(function(){ $('#publish').live('click', function(e){ e.preventDefault(); //Do whatever you want here }); }); 

Обратите внимание, что live будет связывать ссылку даже на publish во время выполнения.

Вы можете получить отправку формы, возвращающую блок js:

 {amp}lt;html{amp}gt; {amp}lt;script{amp}gt; window.parent.document.jQueryFunction(); {amp}lt;/script{amp}gt; {amp}lt;/html{amp}gt; 

или, если вы открыты для плагина, вы можете использовать метод ajaxSubmit () плагина jQuery Form .

 $myFrame.contents().find('form').ajaxForm({ success: function() { // update parent } }); 
 $("#publish").click(function() { $('#inputs').ajaxSubmit({ success:function(){ //alert("Reload called"); parent.location.reload(); } }); }); 

Это сработало.