IE不显示由Javascript更新的文本

时间:2010-12-03 12:32:32

标签: javascript internet-explorer

在我的项目中,我为设备开发了一个Web界面。设备的时间和名称使用AJAX在网页上更新。

首次运行时,当创建(更新)网页时,IE8会正确显示页面,但在刷新/重新访问时,时间会正确显示,但设备名称文本(偶尔会发生变化)不存在。我正在使用innerHTML属性来更新文本。

我在Google Chrome上访问网页时没有遇到此问题。我还使用HTML标头禁用了缓存。 HTML标题如下所示

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />

脚本:

function OnComplete (xmlDoc)    {
    /* ToDo: Add complete event here or remove method
           xmlDoc contains the received XML Document */
    try{                                    
        var txt=""; 
        x = xmlDoc.getElementsByTagName("DateTime"); 
        document.getElementById("idClock").innerHTML = x[0].firstChild.nodeValue; 
        x = xmlDoc.getElementsByTagName("TCOLOR"); 
        document.getElementById("idClock").style.color = x[0].firstChild.nodeValue;             
        x = xmlDoc.getElementsByTagName("deviceNameType"); 
        alert(x[0].firstChild.nodeValue);
        document.getElementById("deviceName").innerHTML = x[0].firstChild.nodeValue; 
        x = xmlDoc.getElementsByTagName("ALARM"); 
        var alarmImg = document.getElementById("idImgAlarm"); 
        var value = x[0].firstChild.nodeValue; 
        switch(value){ 
            case '0': 
                SetClassName( alarmImg, 'replace', 'hidden', 'inline' ); 
                break; 
            case '1': 
                alarmImg.src = 'Alarm.gif'; 
                SetClassName( alarmImg, 'replace', 'inline', 'hidden' );  
                break; 
            case '2': 
                alarmImg.src = 'Alarm_static.jpg'; 
                alarmImg.className ="p4 pr10 f_r pointer inline"; 
                break; 
            default: 
                alert("default"); 
                break;
        } 
    }catch(e){/*alert('ERROR\n'+ e);*/}
}

示例XML:

<?xml version="1.0" encoding="ISO-8859-1"?><rtc><DateTime>2010-12-03 13:01:39 (UTC)</DateTime><TCOLOR>#0</TCOLOR><deviceNameType>AA1J1Q01A1, MYDEVICE</deviceNameType><ALARM>1</ALARM></rtc>

alert()适用于chrome但不适用于IE。

如何在Internet Exploer 8中解决此问题?

2 个答案:

答案 0 :(得分:0)

如果你正在使用jQuery(我知道你说JS)试试这个:

$.ajaxSetup({
    cache: false
});

答案 1 :(得分:0)

AJAX获取请求缓存在IE中。您需要将缓存设置为false:http://api.jquery.com/jQuery.ajax/

benhowdle89的解决方案会影响全局ajax设置,因此页面上的任何ajax请求都不会缓存结果。