2016-05-26 1 views
2

Ich habe ein Web-Element, das nur erscheint, während die Seite (oder ein Teil der Seite) noch geladen wird und verschwindet, wenn die Seite vollständig geladen wurde. Ich möchte genau sehen, wenn dieses Element verschwindet und ich kann das tun, indem Sie etwas wie das in der Browser-Konsole wiederholt ausgeführt wird:Wie man einen Befehl in Schleife in der Browser-Konsole laufen lässt

$("div.v-app-loading") 

oder alternativ:

document.getElementsByClassName('v-app-loading') 

Aber in den meisten Fällen geschieht alles zu schnell und ich bin nicht in der Lage, den genauen Moment zu erfassen. Es muss eine Möglichkeit geben, eine Schleife zu erstellen, die einfach in der Konsole ausgeführt wird und einen der genannten Befehle ausführt, sagen wir alle 0,5 Sekunden oder noch häufiger.

Kann mir jemand in die richtige Richtung zeigen?

+1

setInterval .... – epascarello

+0

@epascarello Dank. Ist diese Frage wirklich so schlimm, dass sie einen Downvote verdient? –

+2

Jemand dachte so – epascarello

Antwort

1

können Sie Javascripts verwenden setInterval(), wie folgend:

function yourFunction(){ 
    //do something here... 
} 
setInterval(yourFunction(), 500); //Will run the function every half a second(500ms = 0.5s) 
+0

Danke dafür. Aber wenn ich es so führe, stoppt es nur, wenn ich zu einer anderen Seite navigiere. Ich möchte, dass es kontinuierlich läuft. –

+0

Der einzige Weg, dies zu tun ist, es von der Konsole aus zu starten und 'protected log' (in chrome) aktiviert zu haben, und Sie müssen wegen der Sandbox auf der gleichen Registerkarte sein. Sie können dies nicht von einer Webseite aus ... –

+1

preserve log wird das Javascript auf der nächsten Seite nicht laden. – epascarello

0

Vielleicht ist es einfacher jQuery zu verwenden, um festzustellen, wenn die Seite geladen wird:

HTML

<body class="loading"> 

JS

// do something initially here 

$(window).load(function() { 
    // do something when finished loading 
    $('body').removeClass('loading'); 
}); 

Edit: Wenn Sie lieber nach der Existenz eines Elements suchen wollten, tun Sie dies in einem rekursiven Funktionsaufruf. Sie können es mit setTimeout drosseln, aber Sie brauchen nicht zu:

function checkElement() { 
    if ($('.v-app-loading').length) { 
     checkElement(); 
     // or: setTimeout(checkElement, 100); 
    } else { 
     // Element disappeared 
    } 
} 

checkElement(); 
+0

Nun, das ist genau der Punkt. Die Seite selbst scheint geladen zu sein, aber einige Widgets auf dieser Seite werden immer noch geladen, so dass ich in diesem Fall ein falsches positives Ergebnis erhalten werde. Außerdem muss ich speziell das Verhalten, das ich beschrieben habe, sicherstellen, wenn dieses Webelement tatsächlich verschwindet, nur wenn alles auf dieser Seite geladen wurde. –

+0

Sorry, antworten aktualisiert! – Rudi

Verwandte Themen