如何使用jQuery从iframe调用父页面上的函数?

我有一个上传表单,发布到隐藏的iframe。 我试图从iframe调用父页面上的函数,但我收到错误“top.stopUpload不是函数”。

这样做的正确方法是什么?

父母页面:

$(document).ready(function() { $('#document_upload').submit( function() { $('#upload_progress').show(); }); function stopUpload(success){ if (success == 1){ $('#result', window.parent.document).html( 'The file was uploaded successfully!'); } else { $('#result', window.parent.document).html( 'There was an error during file upload!'); } $('#upload_progress').hide(); return true; } }) 

IFRAME:

 $(document).ready(function() { top.stopUpload(); } 

你的stopUpload()函数的作用域是传递给$(document).ready()的匿名函数。

您需要确保其范围对iframe可见。 一种方法是将函数分配给window ,即浏览器中的全局对象。

另一种方法是在匿名函数之外的全局代码中创建函数。

试试这个:

 var myGlobalObject = {}; myGlobalObject.stopUpload = function(success){ if (success == 1){ /*...*/} //... }; $(document).ready(function() { //... }); 

来自你的iframe:

 $(document).ready(function() { parent.myGlobalObject.stopUpload(); });