2014-01-16 60 views
2

我試圖添加js文件到頁面。如何檢查該文件是否被加載?等待,直到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"); 
    } 
+1

? – patrick

+0

是的,@帕特里克。當它被加載。 – krotov

回答

4

你可以只添加一個onload事件在任何HTML元素script

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

由於這是native HTMLScriptElement behaviour它應該結合飛鏢罰款。

+1

感謝您的評論。用dart,我做了'ga.onLoad.listen((e)=> checkGA());'只是爲了雙重檢查並刪除了Future – krotov

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?

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

你想知道是否JS腳本是在你的HTML甚至裝