2016-08-15 2 views
1

Kann ich sicherstellen, dass der Flash-Prozess geladen ist, bevor ich foo() anrufe?Wie kann sichergestellt werden, dass "document.body.appendChild (flash_object)" vor der nächsten Zeile geladen wird?

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

Ich glaube nicht, 'appendChild' ist asynchron. Irgendein Grund zu glauben, dass es ist? – vlaz

+1

Auch, warum gibst du den Knoten nicht einfach an 'foo' - so brauchst du nicht nachzusehen. – vlaz

+0

Ich bin eigentlich nicht sicher über appendChild aber ich denke document.createElement ist asynchron obwohl? – tuzzer

Antwort

0

Sie können das neu erstellte HTML-Element einfach an die Foo-Funktion übergeben. Es muss nicht einmal geladen werden, damit Sie Änderungen daran vornehmen können.

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; 
 
}

Verwandte Themen