等到页面上加载了js脚本

时间:2014-01-16 01:35:41

标签: javascript dart

我正在尝试将js文件添加到页面中。如何检查该文件是否已加载?

javascript ga.js文件:

this.event = function (value) {
    this.value = value;
    this.method = function() {
        return "sometext";
    };
};

飞镖码:

ScriptElement ga = new ScriptElement()
    ..src = "/ga.js"
    ..async = true;
querySelector('body').append(ga);

bool exist = context.hasProperty('event');
    JsObject event = null;
    if (exist) {
        print("event exist");
    } else {
        print("there is no event yet");
    }

3 个答案:

答案 0 :(得分:4)

您只需向HTML中的任何onload元素添加script个事件即可。

ga.onload = function(ev) { alert('loaded!') };

由于这是native HTMLScriptElement behaviour,因此它应与Dart完美结合。

答案 1 :(得分:1)

我现在找到的方法就是使用Future。

void checkEvent() {
    bool exist = context.hasProperty('event');
    JsObject event = null;
    if (exist) {
        print("event exist");
    } else {
        print("there is no event yet");
        var future = new Future.delayed(const Duration(milliseconds: 10), checkEvent);
    }
}

但是,如果我现在已经在该javascript文件中存在'事件'了。也许有一些方法可以检查何时在html中加载javascript?

答案 2 :(得分:0)

大多数使用Chrome,Firefox甚至IE等开发者工具的浏览器都有一个名为Network的标签。在这些面板/选项卡中,您可以搜索有问题的文件。如果它已加载,它将在该视图中。

只要JavaScript识别/尝试加载.js文件,console通常会告诉您它是否无法加载文件。

如果您计划在文件加载后在页面上执行某些操作,那么您可能希望按照Niels Keurentjes建议的内容执行更多操作。

更多信息:

Chrome's Network Panel

Firefox's Network Panel

Internet Explorer's Network Panel

OnLoad Event