2017-06-14 2 views
1

Je suis si nouveau pour ajax et jquery!Ajax demande ne fonctionne pas pour les appareils mobiles

Ci-dessous, mes codes fonctionnent comme un charme sur pc de bureau.

Je peux recueillir le temps passé pour les clients, mais dans les appareils mobiles, la requête ajax ne fonctionne pas.

Voici mon code:

<script type="text/javascript"> 
var startTime = new Date();  //Start the clock! 
window.onbeforeunload = function()  //When the user leaves the page(closes the window/tab, clicks a link)... 
{ 
    var endTime = new Date();  //Get the current time. 
    var timeSpent = (endTime - startTime);  //Find out how long it's been. 
    var xmlhttp;  //Make a variable for a new ajax request. 
    if (window.XMLHttpRequest)  //If it's a decent browser... 
    { 
     // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp = new XMLHttpRequest();  //Open a new ajax request. 
    } 
    else  //If it's a bad browser... 
    { 
     // code for IE6, IE5 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");  //Open a different type of ajax call. 
    } 
    var url = "http://www.example.com/time.php?time="+timeSpent;  //Send the time on the page to a php script of your choosing. 
    xmlhttp.open("GET",url,false);  //The false at the end tells ajax to use a synchronous call which wont be severed by the user leaving. 
    xmlhttp.send(null);  //Send the request and don't wait for a response. 
} 
</script> 

Il ne marche pas le travail pour mon téléphone (iPhone)!

Quelqu'un pourrait m'aider s'il vous plaît?

Merci!

+0

Pouvez-vous confirmer sur quel (s) périphérique (s) mobile (s) vous testez? – mjw

+0

Seulement Iphone 6, appareil Apple, j'ai testé – Bagova

+0

Vous avez répondu à la question (iPhone). – mjw

Répondre

0

Je pense que ce problème a été causé par le fait que le périphérique mobile ne prend pas en charge window.onbeforeunload. Pour avoir un effet similaire, essayez document.unload ou document.pagehide

0

Essayez ceci:

<script type="text/javascript"> 
var startTime = new Date();  //Start the clock! 
var isOnIOS = navigator.userAgent.match(/iPad/i)|| navigator.userAgent.match(/iPhone/i); 
var eventName = isOnIOS ? "pagehide" : "beforeunload"; 

window.addEventListener(eventName, function (event) { 
    var endTime = new Date();  //Get the current time. 
    var timeSpent = (endTime - startTime);  //Find out how long it's been. 
    var xmlhttp;  //Make a variable for a new ajax request. 
    if (window.XMLHttpRequest)  //If it's a decent browser... 
    { 
     // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp = new XMLHttpRequest();  //Open a new ajax request. 
    } 
    else  //If it's a bad browser... 
    { 
     // code for IE6, IE5 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");  //Open a different type of ajax call. 
    } 
    var url = "http://www.example.com/time.php?time="+timeSpent;  //Send the time on the page to a php script of your choosing. 
    xmlhttp.open("GET",url,false);  //The false at the end tells ajax to use a synchronous call which wont be severed by the user leaving. 
    xmlhttp.send(null);  //Send the request and don't wait for a response. 
}); 
</script> 

Cet événement fonctionnera aussi bien pour les navigateurs et les appareils iOS ainsi.

+0

@Bagova Cette solution vous convient-elle? Faites le moi savoir pour que ça aide aussi les autres. Merci –