【问题标题】:Stop HTML/Javascript page from loading mid initialization停止加载中间初始化的 HTML/Javascript 页面
【发布时间】:2010-12-21 04:28:48
【问题描述】:

因此,将一段 Javascript 想象为页面上的第一个脚本

var MySuperObject = new (function () {
    this.SuperObjectInit();
})();

现在假设执行此脚本的所有内容(或其中的大部分)都需要 SuperObject 满足其加载条件并正确加载。

假设由于某种原因加载对象失败,我需要中止加载页面的其余部分,特别是脚本。

我知道你们中的大多数人会尖叫为什么不让你的函数发出回调 onSuccess 和 onFailed 但问题是这是在一个带有母版页、嵌套母版页、用户控件等的 ASP.Net 项目中(每个都有他们自己的依赖项和脚本);使这种方法有问题。

另一个选项(我假设)是使用 window.location = "myErrorPage.html";但我不喜欢必须为错误消息创建另一个页面或它会导致重定向的事实。

我希望做的是类似于

StopLoadingPage();
document.write("Error has occurred");

但不确定如何实现。

【问题讨论】:

  • 什么是超对象?
  • 没关系...关键是处理错误。
  • “问题是这是在一个带有母版页、嵌套母版页、用户控件等的 ASP.Net 项目中”这不是问题。它是客户端,如果您使用过 MVC 或任何其他技术(如 PHP、Java 或 Coldfusion),也没有什么不同。
  • 请解释一下?这很重要,因为您如何处理子控件中的 OnFailed 和 OnSuccess 事件?更不用说 - 即使有一种简单的方法来做到这一点 - 你正在谈论重写大量代码来处理这个问题。这也意味着所有未来的页面、控件、母版页都需要 OnSuccess OnFailed 逻辑,这是该项目不需要的另一个依赖项。
  • 提供一个真实世界的问题/示例来说明您想要实现的目标。 “想象”就像相信上帝。很难想象不存在的东西。

标签: javascript asp.net jquery html


【解决方案1】:

您想要实现的不是网页的设计方式,据我所知这是不可能的。从逻辑上讲,您只能在 Javascript 中停止在 Javascript 中启动的内容,因此我能想到的唯一解决方法是异步加载依赖脚本。

我知道这不是您正在寻找的解决方案,但如果没有其他选择(我认为没有),请查看 RequireJS,它会为您处理 JS 依赖项(不需要用于回调等...):http://requirejs.org/

【讨论】:

  • 很公平...谢谢您的意见 :-)
  • 最终使用 window.location = "";行为符合预期并终止页面其余部分的加载,但非常感谢您的回答,如果我从头开始这个项目,这将是我将使用的解决方案。再次感谢:-)
  • @Maxim - 啊!当然,window.location。我见过类似的事情来防止框架破坏,但在这里我没有想到。感谢您回来发布您的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-25
  • 2012-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多