【问题标题】:How do I get access to the ASP.NET Client-Side API at all times?如何始终访问 ASP.NET 客户端 API?
【发布时间】:2009-03-13 19:00:56
【问题描述】:

一些背景。该项目是一个使用 ASP.NET AJAX Extensions 1.0 的 VS 2005 Web 应用程序。

问题,如何在不使用 ScriptManager 控件的情况下引用 Scriptmanager 控件使用的 JavaScript 文件,或者如何更早地加载 ScriptManager JS 文件(我认为这是不可能的,因为 ScriptManager 必须是在服务器端表单标签中)?

我在母版页中有一个 ScriptManager 控件,但很多时候,有些页面只是很好的非异步回发,我在脚本管理器加载之前创建客户端对象。现在我知道在开始时在标记和 CSS 的末尾附近加载脚本是一种很好的做法,但在我的情况下,我创建的一些脚本需要在之前,通常在 head 标签中,因为例如我会有一个实例化客户端对象的中继器。

这就是我想要的:

// 我的脚本

现在我要解决这个问题:

(function() {
   var myInterval;

   myInterval = setInterval(function() {
      if (!Type) {
         return;
      }

      clearInterval(myInterval);

      Type.registerNamespace("Awesome");

      Awesome.Widget = function() {
         var _this = this;

         this.myProperty = 'This is awesome';
      }
   }, 40);
})();

或者我这样做:

var Awesome = {};

Awesome.Widget = function {
   /// Awesome code.
}

最好不要两次加载这些脚本,因为 ScriptManager 控件会在某个时候呈现,因为它在我的 MasterPage 中。

也许问题是我走错了路。非常感谢任何帮助。

【问题讨论】:

    标签: asp.net javascript ajax


    【解决方案1】:

    当您使用 MS AJAX 控件时,您可以利用自动连接的 pageLoad 函数名称,并将代码放入其中。

    您的 pageLoad 函数在文档准备就绪、所有内容都加载完毕并且您可以随心所欲地处理 DOM 时调用(这有点像 jQuery 的 document.ready 函数,但是实际上会稍晚一些)。

    更多详情可以在AJAX Client Life-Cycle Events页面上找到。

    function pageLoad(sender, args){
      Type.registerNamespace("Awesome");
    
      Awesome.Widget = function() {
         var _this = this;
    
         this.myProperty = 'This is awesome';
      }
    }
    

    如果您不关心文档是否已准备就绪,但可以满足所有正在加载和解析的脚本,则可以改为挂接到 init event

    // Attach a handler to the init event.
    Sys.Application.add_init(applicationInitHandler);
    
    function applicationInitHandler() {
      Type.registerNamespace("Awesome");
    
      Awesome.Widget = function() {
         var _this = this;
    
         this.myProperty = 'This is awesome';
      }
    }
    

    【讨论】:

      【解决方案2】:

      我不确定我是否遵循您的问题,但希望这会有所帮助。确保您可以访问 ASP.NET AJAX 客户端库的标准方法是将 ScriptManager 控件添加到您的母版页,然后在需要时在内容页、用户控件和 Web 部件中使用 ScriptManagerProxy 控件。

      ScriptManagerProxy 控件的设置与母版页中 ScriptManager 的设置相结合,以确保页面可以使用正确的 JavaScript 代码。

      【讨论】:

      • ScriptManager/ScriptManagerProxy 加载后访问 API 没有问题。我遇到的问题是我想在 ScriptManager 加载之前或在不使用 AJAX 的页面上使用 ScriptManager 加载的 *.js 文件,以便我的自定义客户端对象可以访问它们。
      猜你喜欢
      • 1970-01-01
      • 2013-11-11
      • 1970-01-01
      • 2014-12-16
      • 2021-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-21
      相关资源
      最近更新 更多