innerHTML 适用于 IE 和 Firefox,但不适用于 Chrome

Posted

技术标签:

【中文标题】innerHTML 适用于 IE 和 Firefox,但不适用于 Chrome【英文标题】:innerHTML works in IE and Firefox, but not Chrome 【发布时间】:2012-01-27 02:55:26 【问题描述】:

数据不会显示在 Chrome 中,除非我在 Chrome 中打开一个 IE 选项卡转到该站点然后将其关闭回 Chrome(抱歉,如果这没有多大意义)。

window.onload = function() 
    var url = "http://----.freeiz.com/gbSales/sales.json";
    var request = new XMLHttpRequest();
    request.open("GET", url);
    request.onload = function () 
        if (request.status == 200) 
            updateSales(request.responseText);
        
    ;
    request.send(null);

function updateSales(responseText)  
    var salesDiv = document.getElementById("sales");
    salesDiv.innerhtml = responseText;

我刚开始学习 javascript,所以我真的不太了解它。

【问题讨论】:

【参考方案1】:

您应该使用一些现代的 Javascript 库。它可以保护您免受浏览器之间的许多细微差异的影响。我喜欢jQuery。

所以,用 jquery 你的代码

window.onload = function() 
  var url = "http://----.freeiz.com/gbSales/sales.json";
  var request = new XMLHttpRequest();
  request.open("GET", url);
  request.onload = function () 
    if (request.status == 200) 
      updateSales(request.responseText);
    
  ;
  request.send(null);

function updateSales(responseText)  
  var salesDiv = document.getElementById("sales");
  salesDiv.innerHTML = responseText;

变成

$(document).load(function() 
  var url = "http://----.freeiz.com/gbSales/sales.json";

  $.get(url, , function(data) 
    $('#sales').html(data);
  );
);

更短、更简洁,适用于所有浏览器!

【讨论】:

顺便说一句,如果一个问题对你有用,你应该接受它(左边那个复选标记)【参考方案2】:

我想你想用:

request.onreadystatechange = function() 

代替:

request.onload = function() 

并更改检查返回值的方式。

请参阅此处的异步请求代码示例:https://developer.mozilla.org/en/DOM/XMLHttpRequest/Using_XMLHttpRequest 了解更多详情。

【讨论】:

【参考方案3】:

只发现只有第一个form标签被去掉,所以可以放一个空的form(),下一个保留在代码中。

【讨论】:

以上是关于innerHTML 适用于 IE 和 Firefox,但不适用于 Chrome的主要内容,如果未能解决你的问题,请参考以下文章

查缺补漏

js 替换 innerHTML 仅适用于没有 jQuery

Javascript innerHTML 不适用于图像,但适用于文本?

for 循环适用于console.log 但不是innerHTML?

为啥 innerHTML 和 textContent 给出不同的结果?

谷歌翻译不适用于任何 IE,但适用于 Firefox 和 Google Chrome