2016-05-08 12 views
0

Wir versuchen, einige Werbeflächen in WordPress ein Plugin zu implementieren.
Aus irgendeinem Grund, wenn das Plugin ruft es google map js entfernt es meine Anzeigen von der Seite. Ich kann nicht herausfinden, warum das so ist, anstatt ihren Code weiter zu durchforsten, haben wir uns für eine einfachere Lösung entschieden.
Ich lade die Anzeigen jetzt in ein verstecktes div oberhalb des Inhaltsbereichs und verschiebe sie an ihren Platz, sobald die Google Map fertig ist. Im Moment benutze ich nur setTimeout, um dies zu erreichen, aber es wäre viel besser, wenn es eine Möglichkeit gäbe zu testen, ob die Seite richtig geladen wurde. Art von wie $(window).load(function(){} außer, anstatt nur das DOM zu überprüfen, ist das Laden, in der Lage sein zu überprüfen, dass Javascript beendet wurde ausgeführt.Wie überprüfen, wenn Javascript abgeschlossen ist

Gibt es eine Möglichkeit, solche Dinge zu überprüfen? Sonst vielleicht eine Möglichkeit, eine Ausgabe aller js-Dateien zu erstellen, die ausgeführt werden, so dass wir tatsächlich eingrenzen können, wo die Google Map-Sachen gemacht werden.

Hier ist unsere Funktion Anzeigen schalten:

$(window).load(function() { 
    setTimeout(function(){ 
     var a = [1,2,3,4]; 
     a = shuffle(a); 
     for (var i = 0; i < 4; i++) { 
      if(document.getElementById("mrec"+i)){ 
       $("#ad"+a[i]).appendTo($("#mrec"+i)); 
       $("#ad"+a[i]).css({ 
        'display': 'block' 
       }); 
      } 
     } 
    },2500); 
}); 
+0

Können Sie den entsprechenden Code schreiben? – Mikey

+0

Wie erstellen Sie die Karte? Ich nehme Javascript an? Wenn dies der Fall ist, sollten Sie ein container-dom-Element für die Karte verwenden, das sich nicht darum kümmert, ob die Karte geladen ist oder nicht - auf diese Weise hat dies keinerlei Auswirkungen auf Ihre Seite. – Damon

+0

'$ (Fenster) .load (Funktion() { setTimeout (Funktion() { var a = [1,2,3,4]; a = Mischen (a); für (var i = 0; i <4; i ++) { if (document.getElementById ("mrec" + i)) { $ ("# ad" + a [i]). appendTo ($ ("# mrec" + i)); . $ ("# ad" + a [i]) css ({ 'display': 'block' });} } }, 2500); }); ' – benikens

Antwort

1

, wenn die Karte Plugin einen Wert zurückgibt Sie es in einem Versprechen wickeln könnte. http://www.html5rocks.com/en/tutorials/es6/promises/. Dojo hat schon lange eine gute Unterstützung für Versprechungen. https://dojotoolkit.org/documentation/tutorials/1.10/promises/

aber wenn das Plugin nicht alles zurück, wenn es Sie so etwas wie

tun vervollständigt
var howOftenToCheck = 200, 
     checkExist = setInterval(function() { 
      if(document.getElementById('mapDiv')) { 
       clearInterval(checkExist); 
       // do stuff now that map has loaded 
      } 
     }, howOftenToCheck); 
Verwandte Themen