【问题标题】:Why window.onload not executing in $.get(为什么 window.onload 没有在 $.get(
【发布时间】:2012-12-17 07:01:20
【问题描述】:
$.get("MyPage.aspx", {foo:"bar"}, function(results){
  Some Js code here.
});

问题 - 在 MyPage.aspx 中,我有 window.onload 方法。这没有被执行。

你的cmets?

【问题讨论】:

  • 因为窗口已经加载完毕。
  • @Stefan - 执行 MyPage.aspx 加载的 .js 代码应该怎么做?

标签: javascript asp.net asp.net-mvc jquery


【解决方案1】:

window.onload 不会因为您使用 ajax 调用获取一些新的 HTML 而再次触发。每个文档只有一个 window.onload 事件。

当 ajax 调用完成时,.get() 调用已经有一个完成函数。从完成调用中完成您的工作。

我知道在加载的代码中触发所需代码的唯一方法是首先将该代码放入您的文档中,然后:

  1. 不要等待 onload 执行,而是在 ajax 调用完成后在您想要手动执行的加载代码中调用所需的函数(例如,将在 onload 中执行的相同代码)。
  2. 将内容放入 iframe(然后将获得自己的 onload 事件)。

【讨论】:

  • @ytftyffty - 我在答案中添加了更多信息。
  • 我必须在页面完全下载后和 ajax 调用开始之前执行 MyPage.aspx 的 .js 代码...
  • @ytftyffty - 嗯?您想在获取代码之前执行代码吗?它是检索代码的 ajax 调用。在 ajax 调用完成并检索到代码之前,您无法执行其中的代码。
  • 是的。我只想在客户端下载后和Ajax调用开始之前执行此页面的js代码。
  • @ytftyffty - 你所要求的毫无意义!该代码仅在 ajax 调用完成时可用。它不可用比这更早。也许您应该备份并描述您要解决的总体问题,因为您需要一种不同的方法。
【解决方案2】:

$.get() 仅从网络服务器检索文件。

如果 HTML 文件被显示,则执行window.onload 等的是浏览器。如果您只是加载文件以检索其内容,则不会执行任何客户端 JS 代码。

【讨论】:

  • 我必须在页面完全下载后和 ajax 调用开始之前执行 MyPage.aspx 的 .js 代码...
猜你喜欢
  • 2012-02-08
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
  • 2014-06-16
  • 2015-01-02
相关资源
最近更新 更多