在函数中使 Javascript 文件在本地可用时,第一次它不起作用

When making Javascript files locally available in function, first time it's not working

在我的母版页中我有一个按钮,单击此按钮将在弹出窗口中打开一个页面。对于弹出窗口,我有一个 javascript 文件。现在我希望这个文件在点击功能中本地加载。

现在的问题是第一次它不工作,然后它工作正常。

第一次点击按钮时出现以下错误:

未捕获的 ReferenceError:未定义 OpenModelWindow

但在那之后它工作正常。这是我的代码:

 $('#<%=btnAddEvent.ClientID %>').click(function (e) {
    var script; var EventType="Task";   
    script = document.createElement("script");
    script.type = "text/javascript";
    script.src = "../Calendar/JS/wdCalendar/src/Plugins/Common.js";  //OpenModelWindow is defined here
    document.getElementsByTagName("head")[0].appendChild(script);

     var url = "../Calendar/add.aspx" + EventType;                

                OpenModelWindow(url,
                { width: 660, height: 400,
                    caption: newcaption,

                });
                return false;
}

任何人都可以告诉我我做错了什么,以至于我第一次没有得到想要的结果。

您可以通过两种方式完成

第一

在文档准备就绪时加载脚本,然后使用您的按钮单击打开模型 像这样

$(document).ready(function(){
var script;    
script = document.createElement("script");
script.type = "text/javascript";
script.src = "../Calendar/JS/wdCalendar/src/Plugins/Common.js";  //OpenModelWindow is defined here
document.getElementsByTagName("head")[0].appendChild(script);

});

现在点击按钮打开模式

$('#<%=btnAddEvent.ClientID %>').click(function (e) {
 var EventType="Task";   
 var url = "../Calendar/add.aspx" + EventType;                
 OpenModelWindow(url,
            { width: 660, height: 400,
                caption: newcaption,

            });
            return false;
}

第二

如果您只想在单击按钮时加载脚本从 jquery 加载脚本并在加载脚本后执行打开模式

$('#<%=btnAddEvent.ClientID %>').click(function (e) {

$.getScript( "../Calendar/JS/wdCalendar/src/Plugins/Common.js", function(data, textStatus, jqxhr ) {
 if(jqxhr.status == 200)
   {
      var EventType="Task";   
      var url = "../Calendar/add.aspx" + EventType;                
      OpenModelWindow(url,
            { width: 660, height: 400,
                caption: newcaption,

            });
            return false;

      }
});

我使用了 jQuery done 方法,现在对我有用了...

 $.getScript('../Calendar/JS/wdCalendar/src/Plugins/Common.js').done(function(){
            OpenModelWindow(url,
                { width: 660, height: 400,
                    caption: newcaption,

                });
            });