如何加载外部文件并确保它首先在JSFiddle中运行?

Dee*_*ons 19 javascript asp.net-ajax jsfiddle

我在这里有一个JsFiddle ,并添加了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);
Run Code Online (Sandbox Code Playgroud)

Jps*_*psy 20

jsFiddle的External Resources选项卡目前使用起来有点棘手且不稳定.此处定义的资源通常未正确包含在代码中.JS和CSS资源的自动识别似乎存在问题.如果发生这种情况,则不会将外部资源添加到生成的代码的head部分.您可以通过查看jsFiddle的Result框架的源代码来检查.您会发现在生成的HTML代码中根本没有提到您的MS AJAX资源.

实际上可以通过向资源的URL添加虚拟值来强制进行正确的识别(有关详细信息,请参阅 - > jsFiddle文档):

...&dummy=.js
Run Code Online (Sandbox Code Playgroud)

这是一个示例,显示如何将外部Google Maps API资源添加到jsFiddle(请注意最后的虚拟参数!):

https://maps.googleapis.com/maps/api/js?sensor=false&dummy=.js
Run Code Online (Sandbox Code Playgroud)

不幸的是,这对您不起作用,因为附加其他参数后MS AJAX URL将失败.

解决方案(目前最安全的加载外部资源的方法)是完全避免使用External Resources选项卡,并在jsFiddle的HTML窗口的第一行手动加载外部代码,如下所示:

<script type='text/javascript' src="http://ajax.aspnetcdn.com/ajax/3.5/MicrosoftAjax.js"></script>
Run Code Online (Sandbox Code Playgroud)

这是你的jsFiddle修改使用该方法:http: //jsfiddle.net/rEzW5/12/

它实际上没有做太多(我没有检查你的其余代码有什么问题),但至少它不会再抛出JavaScript错误.


小智 19

打开"添加资源"部分并添加外部脚本的URL ...