我有一个JsFiddle here,并添加了Microsoft AJAX以通过外部JS /资源部分加载。如何在AJAX文件加载完成后判断我的JS代码是否运行?
似乎AJAX也没有加载。 :(
以下是JSFiddle中的代码:
Type.registerNamespace("Tutorial.Chapter1");
Tutorial.Chapter1.Person = function(firstName, lastName) {
this._firstName = firstName;
this._lastName = lastName;
};
Tutorial.Chapter1.Person.prototype = {
set_firstName: function(value) {
this._firstName = value;
},
get_firstName: function() {
return this._firstName;
},
set_lastName: function(value) {
this._lastName = value;
},
get_lastName: function() {
return this._lastName;
},
_firstName: "",
_lastName: "",
displayName: function() {
alert("Hi! " + this._firstName + " " + this._lastName);
}
};
Tutorial.Chapter1.Person.registerClass("Tutorial.Chapter1.Person", null);
答案 0 :(得分:20)
jsFiddle的“外部资源”选项卡目前使用起来有点棘手且不稳定。 此处定义的资源通常未正确包含在代码中。 JS和CSS资源的自动识别似乎存在问题。如果发生这种情况,则不会将外部资源添加到生成的代码的head部分。您可以通过查看jsFiddle的Result框架的源代码来检查。您会发现在生成的HTML代码中根本没有提到您的MS AJAX资源。
实际上可以通过向资源的URL添加虚拟值来强制进行正确的识别(有关详细信息,请参阅 - > jsFiddle docs):
...&dummy=.js
以下是一个示例,说明如何将外部Google Maps API资源添加到jsFiddle(请注意最后的虚拟参数!):
https://maps.googleapis.com/maps/api/js?sensor=false&dummy=.js
不幸的是,这对您不起作用,因为附加其他参数后MS AJAX URL将失败。
解决方案(目前最安全的加载外部资源的方法)是完全避免使用“外部资源”选项卡,并在jsFiddle的HTML窗口的第一行手动加载外部代码,如下所示:
<script type='text/javascript' src="http://ajax.aspnetcdn.com/ajax/3.5/MicrosoftAjax.js"></script>
以下是您使用该方法修改的jsFiddle:http://jsfiddle.net/rEzW5/12/
它实际上没有做太多(我没有检查其余代码有什么问题),但至少它不再抛出JavaScript错误。
答案 1 :(得分:19)
打开“添加资源”部分,添加外部脚本的网址...
答案 2 :(得分:1)
@ Jpsy的方法似乎不再奏效(请参阅我的回答)。
对我来说,在外部资源下添加资源也没有用。 (根据Firefox调试器,它无法找到资源)。
我能够获得外部JavaScript代码(在我的情况下是jquery.backstretch.js)工作的唯一方法就是使用谷歌找到一个使用这个资源的小提琴(并且工作),然后分叉这个将我的所有代码复制/粘贴到HTML,CSS和JavaScript面板中。啊!
答案 3 :(得分:0)
@clayRay,你绝对是通过代码手术。通过在普通的html中提到外部源来解决这个问题,在我的情况下是
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
使用外部资源选项卡没有帮助...