.InnerHTML在Internet Explorer中无法正常工作

May*_*yur 6 html javascript string internet-explorer innerhtml

我想为HTML控件的innerHTML分配一个链接标记.但这在Internet Explorer中无法正常工作.但是,当我尝试分配除<link>&<style>标签以外的任何东西时,它可以正常工作.

<html>
<head>
<script type="text/javascript">
function getValue()
  {
  var x=document.getElementById("myHeader");
  x.innerHTML='<link \"http://test.com/css/template.css\" rel=\"stylesheet\"><div>abc</div>';
  alert(x.innerHTML);
  }
</script>
</head>
<body>

<h1 id="myHeader" onclick="getValue()">Click me!</h1>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

此外,如果我更改上面的<div>标签和<link>标签序列,它也可以在Internet Explorer中正常工作.

x.innerHTML='<div>abc</div><link \"http://test.com/css/template.css\" rel=\"stylesheet\">';
Run Code Online (Sandbox Code Playgroud)

请指教!谢谢.

编辑:这是Internet Explorer与ExtJs的错误.更多信息在

http://www.sencha.com/forum/showthread.php?30110-internet-explorer-autoLoad-css-not-applied

Koo*_*Inc 11

innerHTML在IE中不起作用,但是使用DOM方法它会:

function getValue()
{
  var x=document.getElementById("myHeader")
    , link = document.createElement('link')
    , div = document.createElement('div');
  x.innerHTML = '';
  x.appendChild(link);
  x.appendChild(div);
  div.innerHTML = 'abc';
  link.href = 'http://test.com/css/template.css';
  link.rel = 'stylesheet';
  alert(x.innerHTML);
}
Run Code Online (Sandbox Code Playgroud)

虽然引用声明link标签可能只出现在标题中,但是如果你使用我提供的代码,在我尝试的所有浏览器(IE,firefox,chrome)中,样式链接确实有用.看到这个jsfiddle(我在test.com上使用了一个真正的css-href ;-)

如果您想要放入link其中的合法部分(<head>),请使用:

var header = document.getElementsByTagName('head')[0];
  , link = document.createElement('link');
header.appendChild(link);
link.href = 'http://test.com/css/template.css';
link.rel = 'stylesheet';
Run Code Online (Sandbox Code Playgroud)


sel*_*bie 8

首先,你缺少一个href属性<link>.

<link href=\"http://test.com/css/template.css\" rel=\"stylesheet\" />
Run Code Online (Sandbox Code Playgroud)

并且不要将链接和样式标记放入<body>.将它们注入<head>

  var link = document.createElement("link");
  link.href = "http://test.com/css/template.css";
  link.rel = "StyleSheet";
  document.head.appendChild(link);
Run Code Online (Sandbox Code Playgroud)


oez*_*ezi 1

我认为问题在于必须<link>是一个空元素。将您的代码更改为:

x.innerHTML='<link \"http://test.com/css/template.css\" rel=\"stylesheet\" /><div>abc</div>';
                                                     // this is the trick ^^^
Run Code Online (Sandbox Code Playgroud)

编辑:我还没有测试过这个,但这是伤害我眼睛的第一件事。

EDIT2: <link>标签应该只出现在 -section 内部<head>......我希望你知道你想要做什么。