2016-12-20 2 views
0

Ich versuche, Liste der Dateien dynamisch vorzuladen, die zwischen Bildern und JavaScript-Dateien alles sein können. Mit Chrome und Firefox wird alles superglatt, aber wenn ich versuche, mit Edge JavaScript-Dateien vorab zu laden. Edge kann immer noch mit Bildern umgehen, aber keine js-Dateien. Und ja, ich habe es mit addEventListener versucht, es funktioniert auch nicht.object.onload schlägt mit IE und Edge fehl

Edge gibt mir keine Fehler.

var object = {}; 
    object = document.createElement('object'); 
    object.width = object.height = 0; 
    object.data = path/to/javascriptfile.js 
    body.appendChild(object); 

    object.onload = function(){ 
     console.log('hello world') 
     //not firing with edge 
    } 

Alles relevante ich vermisse?

UPDATE: Hat nach dem Tag keinen Erfolg bekommen. Vermutlich werde ich das jetzt lassen und einfach das Vorladen von Skriptdateien mit Edge überspringen, bis ich eine Lösung gefunden habe.

+0

Mögliches Duplikat [Gibt es ein Cross-Browser-Standard-On-Load-Ereignis für HTML des "Objekt" Tag?] (Http://stackoverflow.com/questions/7756353/is-there- a-cross-browser-standard-on-load-event-fuer-htmls-object-tag) –

Antwort

1

Vielleicht lohnt sich eine Überprüfung - von Msdn:

Die Client-Lasten-Anwendungen, eingebettete Objekte und Bilder, sobald trifft er auf die Applet einbetten und img Objekte während der Analyse. Folglich tritt das Onload-Ereignis für diese Objekte auf, bevor der -Client alle nachfolgenden Objekte analysiert. Um sicherzustellen, dass ein Ereignishandler das Onload-Ereignis für diese Objekte empfängt, platzieren Sie das Skriptobjekt , das den Ereignishandler vor dem Objekt definiert, und verwenden Sie das Onload-Attribut im Objekt, um den Handler festzulegen.

https://msdn.microsoft.com/en-us/library/windows/apps/hh465984.aspx

bearbeiten, um eine Klarstellung:

Sie sollten den Ereignis-Listener an, bevor das Element auf der Seite hinzugefügt wird.

Selbst wenn ich das tue, bin ich mir nicht sicher, ob es funktionieren wird oder nicht. Aber um sicherzustellen, haben Sie alle Optionen versuchen erschöpft nachstehendes Beispiel:

function doLoad() { 
    console.log('The load event is executing'); 
} 

var object = {}; 
object = document.createElement('object'); 
object.width = object.height = 0; 
object.data = 'path/to/javascriptfile.js'; 

object.onreadystatechange = function() { 
    if (object.readyState === 'loaded' || object.readyState === 'complete') doLoad(); 
    console.log('onreadystatechange'); 
} 

if (object.addEventListener) { 
    object.addEventListener("load", doLoad, false); 
    console.log('addEventListener'); 
} 
else 
{ 
    if (object.attachEvent) { 
     object.attachEvent("onload", doLoad); 
     console.log('attachEvent'); 
    } else if (object.onLoad) { 
     object.onload = doLoad; 
     console.log('onload'); 
    } 
} 

var body = document.getElementsByTagName("body")[0];  
body.appendChild(object); 

Wenn dies nicht funktioniert, könnten Sie vielleicht Preload „Bild“ anstelle von „Objekt“ in IE: https://stackoverflow.com/a/11103087/1996783

+0

Leider bin ich in diesem Moment komplett tot oder ich bin einfach nur dum, aber ich konnte es nicht mit den gegebenen Informationen arbeiten . Ich werde weiter suchen, aber wahrscheinlich muss eine vollständige Umgehung für Edge machen. Zumindest für jetzt. – eljuko

+0

@eljuko Ich habe ein Beispiel hinzugefügt. Nicht sicher, ob es funktioniert oder nicht, aber meine Finger überkreuzt – Mackan

+0

Danke, dass Sie sich Mühe geben. Werde dies versuchen und informieren sobald ich fertig bin. – eljuko

0

Die temporäre Arbeitslösung besteht darin, das Ereignis direkt in das Skriptelement und nicht in das Objekt zu laden. Es ist traurig, da es wie ein Charme in Chrome & FF funktioniert.

Es stellt sich heraus, object.data mit css Quelle wurde auch nicht geladen. Ich weiß nicht, ob es ein Fehler ist, da es immer noch ein Image von object.data laden kann.

Aber Show muss weitergehen.

Cheers, eljuko

Verwandte Themen