如何在加载特定更新面板后加载jquery文件?

时间:2012-02-15 14:31:12

标签: c# jquery asp.net ajax updatepanel

我有jquery个文件集。就像这样:

 <script src="js/PortalJs/jquery-ui-personalized-1.6rc2.min.js" type="text/javascript"></script>

 <script src="js/PortalJs/inettuts.js" type="text/javascript"></script>

如何在加载特定更新面板后调用这些文件。

4 个答案:

答案 0 :(得分:2)

这是我用来动态添加依赖项的函数

function addDependencies(args) {
  var head = document.getElementsByTagName('head')[0];

  // todo refactor this logic
  function exists(tag, src) {
    var elms = document.getElementsByTagName(tag);

    for (var i=0; i<elms.length; i++) {
      if (elms[i].getAttribute('src') === src) {
        return true;
      }
    }
  }

  for (var src in args) {
    var isCss = /.+\.css$/i.test(src);
    var isJs = /.+\.js$/i.test(src);
    var tag = isCss ? 'link' : 'script';

    if (!exists(tag, src)) {
      if (isCss) {
        if (document.createStyleSheet) {
          document.createStyleSheet(src);
        } else {
          var link = document.createElement(tag);
          link.type = 'text/css';
          link.href = src;
          head.appendChild(link);
        }
      } else if (isJs) {
        var script   = document.createElement(tag);
        script.type = 'text/javascript';
        script.src = src;
        script.onload = args[src]();
        head.appendChild(script);
      }
    }
  }
}

继承人demo

答案 1 :(得分:2)

要在加载更新面板后在javascript端进行调用,请使用此标准代码。

var prm = Sys.WebForms.PageRequestManager.getInstance();

prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);

function InitializeRequest(sender, args) {     
}

function EndRequest(sender, args) {
  // here you can load your scripts.
}

您可以在EndRequest中添加一个加载javascript的代码,但要注意只加载它们。如果jQuery有冲突,请尝试使用jQuery.noConflict()命令。 http://api.jquery.com/jQuery.noConflict/

答案 2 :(得分:2)

Sys.WebForms.PageRequestManager endRequest事件

MSDN文档 在异步回发完成并且控件已返回到浏览器之后引发endRequest事件。您可以使用此事件向用户提供通知或记录错误。


参考 - endRequest


示例代码

<script type="text/javascript" language="javascript">
function EndRequestHandler(sender, args){
 // here you can call the function provided by other user
}
<script

所以你必须在javascript中写下脚本加载函数......

答案 3 :(得分:1)

更新面板有一个onLoad事件:http://msdn.microsoft.com/en-us/library/system.web.ui.updatepanel.onload.aspx

<asp:UpdatePanel OnLoad="upOnload" ...

您可以在代码后面的updatePanel Onload事件中加载您的javascript,如下所示:

    protected void upOnload(object sender, EventArgs e)
{
    Page.Header.Controls.Add(new LiteralControl("<script type='text/javascript' src='" + Page.ResolveUrl("~/js/PortalJs/inettuts.js") + "'></script>"));
}