【问题标题】:Run AJAX in an iframe - document.ready not working在 iframe 中运行 AJAX - document.ready 不起作用
【发布时间】:2012-08-28 07:08:09
【问题描述】:

我有一个使用 AJAX 的应用,但 AJAX 在 iframe 中无法正常工作。

这是我正在使用的 JS(这是在加载到 iframe 的页面内)。这 3 个函数各自调用一个填充应用程序的 AJAX 例程。我想要的是加载 iframe,然后让这个 JS 运行。它必须是在完成加载后调用此代码的 iframe,因为我无法控制加载它的页面 (Facebook)。

<script type="text/javascript">
$(document).ready(function(){

    alert('HELLO!!!'); // Test to see if it working

    load_tab_content('<?php echo $load_tab_content_nonce; ?>');
    load_services('<?php echo $load_services_nonce; ?>');
    load_pages('<?php echo $load_pages_nonce; ?>');

});
</script>

这是可能的,还是我做错了?谢谢。

【问题讨论】:

  • 您想从 iframe 调用父窗口中的函数吗?
  • 否 - 我希望 iframe 在完成加载后从其自身调用一个函数 - document.ready() 过早触发我的函数,因此未加载应用程序的内容。 Facebook 应用程序加载在 iframe 中,因此所有事情都必须由应用程序完成,并且我可以找到的所有“操作方法”文档都建议您需要父母能够做到这一点。谢谢。
  • document.ready 与 window.load 不同,而 document ready 在组件准备好使用时提前触发脚本,window.load 等到所有内容加载完毕。尝试使用 window.load
  • 谢谢,现在就试一试...
  • ...可惜不是答案。

标签: ajax iframe facebook-apps


【解决方案1】:

我推荐两种方法中的一种,第一种可能也是最简单的方法是在父页面中运行 onload 函数。您可能无法让 iframe 文档中的 onReady 正确执行。

<script>
  function notify_load() {
    //alert("now do something");
  }
</script>

<iframe src="http://someurl/" onload="notify_loaded()" />

第二个建议是在 iframe 页面中编写一个脚本来更改可以从主页查询的变量。或者您甚至可能想尝试直接调用父页面函数,即。 parent.notify_load();

【讨论】:

    猜你喜欢
    • 2013-11-30
    • 2015-04-07
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多