Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问<;noscript>;使用Javascript 我想得到这个innerHTML 警报($('example').innerHTML);_Javascript_Innerhtml_Noscript - Fatal编程技术网

访问<;noscript>;使用Javascript 我想得到这个innerHTML 警报($('example').innerHTML);

访问<;noscript>;使用Javascript 我想得到这个innerHTML 警报($('example').innerHTML);,javascript,innerhtml,noscript,Javascript,Innerhtml,Noscript,此javascript代码段只返回一个空字符串。有没有办法获取noscript节点的内容 p、 我在这个特定的项目上使用prototype。使用Firefox 3.0.7、Safari 3.2.2和MSIE 7.0.5730.13(都在WinXP SP3上)进行测试时,标记中的所有内容似乎都从DOM树中完全省略了 但是,可以访问元素本身,然后使用DOM方法更改其子元素。从: NOSCRIPT元素允许作者在脚本未执行时提供备用内容。在以下情况下,NOSCRIPT元素的内容只能由支持脚本的用户代理呈

此javascript代码段只返回一个空字符串。有没有办法获取noscript节点的内容


p、 我在这个特定的项目上使用prototype。

使用Firefox 3.0.7、Safari 3.2.2和MSIE 7.0.5730.13(都在WinXP SP3上)进行测试时,
标记中的所有内容似乎都从DOM树中完全省略了

但是,可以访问
元素本身,然后使用DOM方法更改其子元素。

从:

NOSCRIPT元素允许作者在脚本未执行时提供备用内容。在以下情况下,NOSCRIPT元素的内容只能由支持脚本的用户代理呈现:

  • 用户代理配置为不评估脚本
  • 用户代理不支持文档前面的脚本元素调用的脚本语言
在我看来,这意味着如果在浏览器中启用脚本,NOSCRIPT标记(在本例中为div)的全部内容将被完全忽略。您是否验证了“示例”div在您的情况下是否可以通过DOM访问?

如果启用了脚本,尽管它必须是可解析文本,并且对内容有一些限制。记住这一点,您应该能够提取文本,解析它,然后找到所需的元素。这方面的一个基本例子如下:

<noscript><div id="example">I want to get this innerHTML</div></noscript>

<script type="text/javascript"> alert($('example').innerHTML);</script>

注意,当我最初写下这个答案时,上面的内容在Google Chrome中失败了;最近,对noscript内容的访问似乎得到了更好的支持,但这仍然是一个边缘案例,可能比其他元素更容易出现错误-如果您有其他选择,我会避免它。

我不确定prototype,但这在Chrome和jQuery中是有效的:

var nos = document.getElementsByTagName("noscript")[0]; 
// in some browsers, contents of noscript hang around in one form or another
var nosHtml = nos.textContent||nos.innerHTML; 

if ( nosHtml )
{
  var temp = document.createElement("div");
  temp.innerHTML = nosHtml;

  // lazy man's query library: add it, find it, remove it
  document.body.appendChild(temp);
  var ex = document.getElementById("example");
  document.body.removeChild(temp);

  alert(ex.innerHTML);
}

用jQuery试试$($((“noscript”).text()。

我实际上已经测试过了(见我的答案)-div不在DOM中。没有尝试其他两个,但FF3.0.7通过textContent公开了内容。这在IE7(XP)上似乎不起作用。不过,我确实在IE6上工作。用jQuery试试$($(($)noscript”).text()。@Shog9过了这么久,你能澄清一下这个答案吗
在Google的Chrome中,noscript元素在DOM中没有子元素
——如果我理解正确,你是说当启用Javascript时,你当时测试的Chrome版本完全清空了
noscript
标记的内容,从而使其内部内容为空?如果是真的,这似乎有点奇怪。我今天试图实现类似的东西,但这让我想知道
noscript
规范是否没有详细说明如何处理它的内容。天哪,谁知道我当时在想什么,@SuperCat。当前的标准暗示noscript元素的textContents应该是可访问的(尽管包含某些内容可能是一个验证错误);6年前他们所暗示的,我没有精力去猜测。我仍然认为这是一个储存任何重要物品的不可靠的地方,但现在它确实看起来不那么充满危险;我将修改注释。我已成功地将其用于IE9、FF9和Chrome16.0.912.77。在我的例子中,必须使用IE8的变通方法(可能更早),通过AJAX检索当前URL的内容,插入到jQuery UI选项卡中,因为默认情况下,对于完整请求,来自非根URL的实际选项卡内容在noscript标记中提供,而AJAX请求上的选项卡内容仅提供。请尝试$($(“noscript”).text()使用jQuery。这^。至少在Chrome32中是这样。这很有趣,对检索纯文本很有用。但是,如果您试图检索带有标记的任何标记,Sizzle(1.9.1)会抛出一个“无法识别的表达式”错误。
$('noscript').before($('noscript').text());