2012-01-02 11 views
0

javascriptを使用して私のウェブページの動的コンテンツでいくつかのフィールドを更新しています。これは、すべてのPCブラウザ(Firefox、IE、Chromeでテスト済み)で完璧に動作しますが、Androidの電話機やiPhoneでは動作しません。電話機は静的コンテンツを表示しますが、javascriptによって書き込まれた値は表示されません。私のjavascriptコードはpcで動作しますが、アンドロイドまたはiosでは実行されません

HTTP GETの返信メッセージの形式に関連付けることができますか?返信メッセージには、生データだけのHTTPヘッダーは含まれていません。

私の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; 
} 

私の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> 
+0

コードはiPhone上でうまく動作します( 'と' onLoad = 'get_datetime();')を使用しているので、あなたはそれを呼び出す方法あなたのHTML ...詳細を提供したいかもしれません... –

+1

多分、ブラウザ間のハードルをjQueryに委任することで、あなたの問題を解決できるでしょう。 –

+1

デベロッパーコンソールを使用して何が間違っているかを確認します。 – sciritai

答えて

3

HTTPヘッダーがありませんでした。動的コンテンツを運ぶHTTPレスポンスにはHTTPヘッダーがありません。今私は手動でヘッダーを追加しました(カスタムメイドのシステムなので手動で追加する必要がありました)。

ヘッダーはPCのブラウザでは問題ありませんが、Android/iOSでは認められていないようです。

0

私はあなたが特別な文字セットを使用している参照して、これが問題になるだろうか?

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

閉鎖の理由はありません。取り出してください。同様に:

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; 
} 
+0

これは問題の原因ではありません。私のページの中には、最初に変数定義がなく、とにかく動作しないものがあるからです。 –

関連する問題