Ajax请求不适用于移动设备

时间:2017-06-14 19:17:40

标签: jquery ajax xmlhttprequest ajax-request

我是ajax和jquery的新手!

在下面,我的代码作为桌面电脑的魅力。

我可以为客户收集花费的时间,但在移动设备中,ajax请求无效。

这是我的代码:

<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> 

它对我的手机(iphone)无效!

有人可以帮帮我吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

我认为此问题是由移动设备不支持window.onbeforeunload引起的。要获得类似效果,请尝试document.unloaddocument.pagehide

答案 1 :(得分:0)

试试这个:

<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> 

此活动也适用于浏览器和iOS设备。

相关问题