Seite automatisch reloaden

  • Hallo Liebe Community,

    ich habe ein Problem und komme nicht weiter. Ich schreibe eine Erweiterung für Firefox auf Android.
    Nun möchte ich, das per touch auf den Menüpunkt, die Aktuelle Seite im Browser alle x sekunden reloaded wird. Ich habe es so versucht.

    Die Funktionen:

    Code
    function sleep(milliSeconds){
    	var startTime = new Date().getTime(); // get the current time
    	while (new Date().getTime() < startTime + milliSeconds); // hog cpu
    }
    function refreshURL(aWindow){
            for(var i = 0; i < 5;i++){
    	   aWindow.BrowserApp.selectedTab.browser.reload();
               sleep(15000);
            }
    }

    Das Problem hierbei ist aber, das er anfängt die Seite neuzuladen, dies aber erst abschließt, wenn die Schleife zu ende ist und nicht für jeden durchlauf einmal.Ich denke mal durch das Sleep wird er beim laden hängen bleiben und dann kommt ja auch schon der nächste Schleifenaufruf.

    Vielleicht ist ja auch mein Ansatz falsch und jemand anderes hat eine bessere idee, würde mich sehr freuen.

    Grüße

  • Ich habe eigentlich davon keine Ahnung, aber versuche es mal mit einer "break"-anweisung am Ende der Funktion.

    Übersetzer für Obersorbisch und Niedersorbisch auf pontoon.mozilla.org u.a. für Firefox, Firefox für Android, Firefox für iOS, Firefox Klar/Focus für iOS und Android, Thunderbird, Pootle, Django, LibreOffice, LibreOffice Onlinehilfe, WordPress

  • Zitat von milupo

    Ich habe eigentlich davon keine Ahnung, aber versuche es mal mit einer "break"-anweisung am Ende der Funktion.

    Code
    function refreshURL(aWindow){
            for(var i = 0; i < 5;i++){
          aWindow.BrowserApp.selectedTab.browser.reload();
               sleep(15000);
            }
    break;
    }

    so oder wie ? Aber macht das sinn ?!

  • Kann ich dir nicht sagen, wie gesagt, ich habe nicht viel Ahnung. Musst du testen. Eine break-Anweisung unterbricht den Ablauf eines Vorgangs. Möglicherweise musst du vielleicht auch einen anderen Schleifentyp wählen. Aber wie gesagt, das sind nur unausgegorene Ideen von mir.

    Übersetzer für Obersorbisch und Niedersorbisch auf pontoon.mozilla.org u.a. für Firefox, Firefox für Android, Firefox für iOS, Firefox Klar/Focus für iOS und Android, Thunderbird, Pootle, Django, LibreOffice, LibreOffice Onlinehilfe, WordPress

  • break unterbricht Schleifen, das heißt an der Stelle vom letzten Code-Beispiel wird das überhaupt nichts bringen. Und ohne irgendeine Abbruchbedingung, hat eine Abbruch-Anweisung wenig Sinn. Einen Lösungsvorschlag kann ich aus Ermangelung an Zeit gerade leider nicht anbieten, dafür kommt die Anfrage etwa eine Woche zu früh. ^^

  • Es geht ja weniger darum irgendeine abbruchbedingung zu schaffen, sondern dass das reloaden der Seite nicht richtig ausgeführt wird. Was mir nun auch aufgefallen ist, ist das der reload direkt beim aufruf der Funktion ausgeführt wird egal, ob er an irgendwelche bedingungen geknüpft ist oder nicht.

  • Ich habe nicht sonderlich viel Erfahrung mit der Add-on-Entwicklung für Firefox Mobile. Du musst wohl mit einem Eventlistener arbeiten. Ich habe mal einen Prototypen für den Desktop geschrieben. Als Desktop-Erweiterung funktioniert das einwandfrei. Für Firefox Mobile kann das so nicht 1:1 übernommen werden, da ich mich eines APIs bedient habe, welches es bislang nur für den Desktop gibt, aber das Prinzip dürfte daraus hervorgehen. Aber ich kann bei Firefox Mobile wie gesagt wirklich nicht helfen.

    Code
    require('sdk/tabs').on('ready', reload);
     
    function reload(tab) {
      tab.attach({
        contentScript: 'setTimeout(function () { location.reload(1); }, 5000);'
      });
    }