setTimeout funktioniert nicht auf safari mobile
Ich habe eine Funktion, die zeigt ein Menü, wenn Sie auf es, und ich will, dass es verschwindet nach 5 Sekunden. Das ist mein javascript - es funktioniert auf desktop-browser, aber es verschwindet nicht auf die mobilen Kollegen.
$(function() {
$('#prod_btn').click(function() {
$(this).addClass('selected').next('ul').css('display', 'block');
setTimeout(hideMenu, 5000);
});
});
function hideMenu() {
$('#prod_btn').removeClass('selected').next('ul').css('display', 'none');
}
Wo ist das problem?
Dank
- Der timeout ist das brennen in safari mobile ist für mich, wenn ich einen alert() in die hideMenu () - Funktion. Ist es für Sie arbeiten?
- Ich habe versucht, aber es zeigt nicht alles, es scheint, dass es kein Feuer, das Funktion...
- Welche Versionen benutzt du von jquery, safari, etc? Es funktioniert bei mir mit jquery 1.6.4 und iOS 4.3 auf dem simulator. Sind Sie immer Fehler?
- Ich habe versucht, auf iPhone 4 und iPad 2 mit iOS 5 und auf dem iPhone 3GS mit 4.3 und es immer noch nicht funktioniert, ich bin mit jquery 1.6.2
- Ich habe keine Fehler, Mach einfach nichts, weder die Warnmeldung...
- Ich habe auch versucht mit jquery 1.7 von google-apis ohne jede änderung
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe gerade das gleiche problem hatte. Mein code läuft Super in jedem browser auf meinem Mac, aber auf iOs-Geräten funktioniert es nicht.
Ich ".bind(this)" auf meine timeout-Funktion, und das ist, was die Ursache für das problem für mich.
Wenn ich die Erweiterung der Funktion-Objekt mit ".bind" in meinem Skript, es funktioniert wie ein Charme.
Mein code ist so etwas wie dieses:
Damit dies funktioniert auf iOs-Geräten, die ich (wie oben erwähnt) nur noch diese:
Sehe ich keine .binden Sie auf Ihrer setTimeout, aber für andere mit dem gleichen problem, dies kann das Problem sein. Deswegen bin ich auch posten 🙂
Zog ich Ihr Beispiel zu einer jsbin, und es funktioniert auf meinem iphone 4.
Bitte testen Sie es aus, jetzt hier von Ihren Geräten: http://jsbin.com/asihac/5
Sehen Sie den code hier http://jsbin.com/asihac/5/edit
Beispiel ist die Verwendung von jQuery - latest und ich nur Hinzugefügt werden, die gewünschte css-Klasse.
gilt das nicht für deinen code, aber ein häufiges problem mit langen Skripts Versagen auf iOS-Geräten ist, dass MobileSafari tötet einen javascript-thread, der nach 10 Sekunden verstrichen sind. Sie sollte nutzen zu können, setTimeout und/oder setInterval um dies zu umgehen, oder Sie können es vermeiden, indem Sie eine Verknüpfung, um es und damit läuft es auch als app. sehen https://discussions.apple.com/thread/2298038, besonders die Kommentare von Dane Harrigan.
Beachten Sie auch, dass alle setTimeout-Funktion ist tatsächlich wahrscheinlich Feuer, während die DOM-Elemente zu Rendern, wenn die Verzögerung auf einen Wert festgelegt ist, zu kurz. Während das scheint offensichtlich, es kann leicht verwechselt werden mit der Methode kein brennen zu löschen. Eine gute Möglichkeit zu testen, ist eine Warnung-Eingabeaufforderung ausführen.
Dann überprüfen, um zu sehen, ob Ihre Funktion feuert nach.