【问题标题】:innerHTML doesn't work in IE11 and IE8innerHTML 在 IE11 和 IE8 中不起作用
【发布时间】:2014-11-16 03:24:36
【问题描述】:

我使用这些代码来刷新我的页面的一部分:

var container = document.getElementById("mainForm:table_1");
var content = container.innerHTML;
container.innerHTML= content;

container.innerHTML 在 Firefox 和 chrome 中运行良好 但它在 IE8 和 IE11 中不起作用

我已阅读以下链接: .InnerHTML Not working properly in Internet Explorerdocument.getElementById().innerHTML fails with 'Unknown Error' in IE

但我的问题是由于动态生成,我无法轻松更改代码的其他部分。

1) 有什么办法可以只用我的这部分代码来解决 IE 问题?

2) 而且我还需要一个替代方案:

window.history.pushState()

在 IE8 和 IE9 中不起作用

【问题讨论】:

  • 猜猜mainForm:table_1<table> 元素?如果是这样,请尝试选择表格的父元素并替换整个表格。
  • 是的,你是对的,它是一张桌子。我尝试这样做,我的问题的第二部分怎么样?如何使用类似 pushstate 的字符串向 url 添加一个与 ie8 和 ie9 一起使用的字符串?谢谢你的回答

标签: html internet-explorer internet-explorer-8 innerhtml internet-explorer-11


【解决方案1】:

IE9 及以下不支持 pushState。对于unsupported browsers,请使用history API。并找到更多polyfills here 列表。

【讨论】:

  • 是的,你是对的,它不起作用,但是使用原生 javascript 或 jquery 没有任何方法吗?不使用历史 API
  • @OmiD 你可以停止支持过时/过时的浏览器。是时候停止迎合拒绝更新的人了——尤其是因为这样做几乎需要手动和故意(因此对我们恶意)禁用 Windows 更新。
【解决方案2】:

对于您问题的第一部分,请执行以下操作:

  var container = document.getElementById("mainForm:table_1").parentNode;
  var content = container.innerHTML
  container.innerHTML= content;

对于你问题的第二部分,@JITHIN PV 说你必须使用 history.js

您可以像这样轻松使用它:

var History = window.History;
History.enabled ;
History.pushState("object or string", "object or string", "object or string");

【讨论】:

    猜你喜欢
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    相关资源
    最近更新 更多