2016-08-15 41 views
1

有沒有什麼辦法可以確保在我調用foo()之前加載Flash進程?如何確保在下一行之前加載「document.body.appendChild(flash_object)」?

window.onload = function(){ 
    document.body.appendChild(CreateFlashObject("flash_obj")); 
    foo(); 
} 
function CreateFlashObject(objectName){ 
    var obj = document.createElement("object"); 
    obj.setAttribute("id", objectName); 
    obj.setAttribute("type", "application/x-shockwave-flash"); 
} 
function foo(){ 
    //doing something with the flash_obj 
} 
+2

我不認爲'appendChild'是異步的。任何理由相信它是? – vlaz

+1

另外,你爲什麼不把節點傳給'foo' - 這樣你就不需要查看它了。 – vlaz

+0

我其實不確定appendChild,但我認爲document.createElement是異步的嗎? – tuzzer

回答

0

您可以將新創建​​的html元素傳遞給foo函數。它甚至不需要加載,以便對其進行更改。

window.onload = function(){ 
 
    var obj = CreateObject("foo_obj1"); 
 
    var obj2 = CreateObject("foo_obj2"); 
 
    document.body.appendChild(obj); 
 
    boo(); 
 
    foo(obj2); 
 
    document.body.appendChild(obj2); 
 
    console.log(obj,obj2); 
 
} 
 
function CreateObject(objectName){ 
 
    var obj = document.createElement("object"); 
 
    obj.setAttribute("id", objectName); 
 
    return obj; 
 
} 
 
function foo(obj){ 
 
    obj.width = 400; 
 
    obj.height = 400; 
 
} 
 
function boo() { 
 
    var obj = document.getElementById("foo_obj1"); 
 
    obj.width = 200; 
 
    obj.height = 200; 
 
}

相關問題