是否仅在禁用JavaScript时生成noscript标记?

时间:2013-09-02 07:52:06

标签: javascript recaptcha

我检查了我网站(WordPress)应用程序的页面源代码,发现了以下内容

<div class="control-group">
<div id="recaptcha_div" class="controls">
    <noscript>&lt;iframe
        src="https://www.google.com/recaptcha/api/noscript?k=6Lcc4OYSAAAAABTEzBumk7dNbnpKbpC3JhVdi2yU"
        height="300" width="500"&gt;&lt;/iframe&gt;&lt;br/&gt; &lt;textarea
        name="recaptcha_challenge_field" rows="3"
        cols="40"&gt;&lt;/textarea&gt; &lt;input type="hidden"
        name="recaptcha_response_field" value="manual_challenge"/&gt;</noscript>
    <div for="cscf_recaptcha" class="help-inline"></div>
</div>

我相信我的浏览器启用了JavaScript。这是否意味着JavaScript已完全禁用或仅在此时不可用?

3 个答案:

答案 0 :(得分:2)

noscript标记是不支持javascript的浏览器的后备机制(或者当禁用javascript或使用不支持的脚本语言时)。

在上述情况下,禁用javascript的浏览器将显示recramecha的iframe版本,而其他浏览器将使用基于JavaScript / AJAX的版本。

注意:关于您的示例,不应对noscript标记内的HTML进行编码。

答案 1 :(得分:2)

<noscript>是页面HTML源代码的一部分,它来自服务器。这是对浏览器的说明:仅当脚本不可用或禁用时(使用首选项设置或NoScript等附加组件)呈现所附内容

答案 2 :(得分:1)

通常,noscript块总是在这里。但一个常见的“技巧”是用javascript将div放在它前面。

因此,如果禁用了javascript,您会看到noscript块。如果启用了javascript,则div位于其前面,因此您无法看到它(但该块仍在html中)。

启用javascript后,某些浏览器也会自动隐藏noscript块。但他们仍然没有将其从DOM中删除。