如何在IE7中获取Javascript中<noscript>的内容?

pix*_*tic 27 javascript noscript internet-explorer-7

我正在尝试<noscript>使用Javascript 获取标记的内容.我成功地设法在FF,Chrome,Opera甚至IE6中获得它但在IE7上失败(尚未尝试过IE8 +).

基本上,这是减少代码版本:

<noscript>Lorem ipsum</noscript>
<script>
    var noscript = document.getElementsByTagName('noscript')[0];
    noscript.textContent; // undefined
    noscript.innerHTML; // empty string
    noscript.childNodes.length; // 0
</script>
Run Code Online (Sandbox Code Playgroud)

我尝试在里面添加元素并定位它们,但没有成功.我试图包装一个父元素并获取它.innerHTML,但<noscript>标签之间的任何东西都被丢弃了.

注意:我正在构建一个lazyloader脚本,该<noscript>元素正是我需要的(浏览器不会获取标记<img> src内的属性<noscript>.)

Tim*_*own 25

在IE 7和8中,根本无法检索<noscript>元素的内容.HTML中的<noscript></noscript>标记之间的任何内容都不会反映在IE中的DOM中,该元素没有子元素,innerHTML并且innerText是空字符串.

在IE 6,情况好奇:与IE 7常见,<noscript>元件没有子节点,但它的内容被反映在innerHTMLouterHTML(但不是innerText所述元件的)性质.

所有这些都是这种情况,IE中唯一的选择是将<noscript>元素中的内容放在其他元素中.要模拟<noscript>元素的行为,可以将内容放在一个立即被JavaScript隐藏的元素中(启用脚本时):

<div id="noscript">Lorem ipsum</div>
<script type="text/javascript">
    document.getElementById("noscript").style.display = "none";
</script>
Run Code Online (Sandbox Code Playgroud)

  • @Ben:你是对的,当我在评论中提出问题时,这就是我试图得到的结果*"noscript内容是否需要完全表示为DOM中的子树?" 但意识到这不符合要求:禁用JavaScript时必须呈现内容,这不会出现在您的解决方案中.它只能在启用JavaScript时转换为DOM节点,这恰恰是错误的方式. (2认同)