简体   繁体   English

我的JavaScript代码在PC上运行,但在Android或iOS上却没有运行

[英]my javascript code runs on pc but doesn't run on android or ios

I'm updating some fields on my webpage with dynamic content using javascript. 我正在使用javascript用动态内容更新网页上的某些字段。 It works perfect with all PC browsers (I tested with Firefox, IE and Chrome) but doesn't work on Android phones and iPhone. 它适用于所有PC浏览器(我已经在Firefox,IE和Chrome上测试过),但不适用于Android手机和iPhone。 The phone displays the static content but doesn't show the values written by javascript. 手机显示静态内容,但不显示javascript编写的值。

could it be related to the format of the reply message for HTTP GET? 可能与HTTP GET回复消息的格式有关吗? I haven't included an HTTP header in the reply message, just raw data. 我没有在回复消息中包含HTTP标头,而只是原始数据。

My js code is below: 我的js代码如下:

function get_datetime() {
    var GetReq = false;
    var hourText = document.getElementById("hour");
    var minuteText = document.getElementById("minute");
    var dayText = document.getElementById("day");
    var monthText = document.getElementById("month");
    var yearText = document.getElementById("year");

    function GetValComplete() {
        if (GetReq.readyState == 4) {
            if (GetReq.status == 200) {
                var time = GetReq.responseText.split(";");
                hourText.value = time[0];
                minuteText.value = time[1];
                dayText.value = time[2];
                monthText.value = time[3];
                yearText.value = time[4];
            }
        }
    }
    if (window.XMLHttpRequest) {
        GetReq = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        GetReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (GetReq) {
        GetReq.open("GET", "/datetime?id=" + Math.random(), true);
        GetReq.onreadystatechange = GetValComplete;
        GetReq.send(null);
        return true;
    }
    return false;
}

my html code is: 我的html代码是:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0     Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-9" />
<title>date-time</title>
<script type="text/javascript" src="datetime.js"></script>

<style type="text/css">
.auto-style3 {
border: 1px solid #000000;
width: 100px;
}
</style>
</head>
<body onload="get_datetime();">
<br />
<h2><strong>date-time settings:</strong></h2>
<h2><strong></strong></h2>
<br />
<form id="form5" name="form5" method="post" action="">
<p><label for="hour">Hour</label>
<input name="hour" id="hour" class="auto-style3" type="text" /><label     for="minute">Minute</label>
<input name="minute" id="minute" class="auto-style3" type="text" /></p>
</form>
<br />
<form id="form6" name="form6" method="post" action="">
<label for="day">Day</label>
<input name="day" class="auto-style3" id="day" type="text" /><label     for="month">Month</label>
<input name="month" class="auto-style3" id="month" type="text" /><label     for="year">Year</label>
<input name="year" class="auto-style3" id="year" type="text" /></form>
<br />
</body></html>

it was the missing HTTP header. 这是缺少的HTTP标头。 The HTTP responses which carry the dynamic content haven't had any HTTP header. 带有动态内容的HTTP响应没有任何HTTP标头。 Now I added the header manually (I had to add it manually because it is a custom-made system) and it worked. 现在,我手动添加了标题(由于它是一个定制系统,因此必须手动添加)并且可以正常工作。

The missing header doesn't matter on PC browsers, but apparently isn't accepted by Android / iOS. 缺少的标头在PC浏览器上无关紧要,但显然不被Android / iOS接受。

I see you are using a special character set, could this be the problem? 我看到您使用的是特殊字符集,这可能是问题吗?

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-9" />

There is no reason for the closure -- try taking it out. 没有理由关闭-尝试将其取出。 Like so: 像这样:

function get_datetime() {
    var GetReq = false;

    function GetValComplete() {
        if (GetReq.readyState == 4) {
            if (GetReq.status == 200) {
                var time = GetReq.responseText.split(";");

                var hourText = document.getElementById("hour");
                var minuteText = document.getElementById("minute");
                var dayText = document.getElementById("day");
                var monthText = document.getElementById("month");
                var yearText = document.getElementById("year");

                hourText.value = time[0];
                minuteText.value = time[1];
                dayText.value = time[2];
                monthText.value = time[3];
                yearText.value = time[4];
            }
        }
    }
    if (window.XMLHttpRequest) {
        GetReq = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        GetReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (GetReq) {
        GetReq.open("GET", "/datetime?id=" + Math.random(), true);
        GetReq.onreadystatechange = GetValComplete;
        GetReq.send(null);
        return true;
    }
    return false;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM