noscript标记中的文本将作为文本而不是形式输出
text inside noscript tags is being outputted as text and not form
一旦我打开我的网页没有JavaScript我的形式在<noscript>
标签显示为代码,但我刷新它之后,一旦它似乎是好的。是否有一种方法,我可以在禁用JavaScript后正确显示表单,或者是否有一种方法,我可以在JavaScript未启用时加载页面后立即重新加载页面?
我试过使用元刷新,但我不能想出一种方法来重新加载一次,而不使用JavaScript。
下面是代码:<div id="JS" class="span4" style="display: none">
<h2 class="side">contact</h2>
<h3 class="side">message</h3>
<br><br>
<form id="animate" >
<input id="name" name="Name" type="text" value="" placeholder="Your Name" maxlength="25" >
<input id="email" name="Email" type="text" value="" placeholder="Your E-mail" maxlength="100">
<textarea id="Message" name="Message" placeholder="Your Message" spellcheck="true" rows="6"></textarea>
<input id="spam" type="text" name="spam" style="display: none;" value=""/>
<input id="submit" type="submit" name="submit" value="Submit"/>
</form>
<div style="color: black; font-family: urwgroteskregular;" id="thanks">
<h2> Thank you, your message has been received.</h2>
</div>
</div>
<div class="span4" id="noScript">
<noscript>
<h2 class="side">contact</h2>
<h3 class="side">message</h3>
<br><br>
<form action='process.php' method="post" >
<input name="Name" type="text" value="" placeholder="Your Name" required="" maxlength="25">
<input name="Email" type="text" value="" placeholder="Your E-mail" required="" maxlength="100">
<textarea name="Message" placeholder="Your Message" spellcheck="true" rows="6" required=""></textarea>
<input type="text" name="spam" style="display: none;" value=""/>
<input type="submit" name="submit" value="Submit"/>
</form>
</noscript>
<script type="text/javascript">
document.getElementById('JS').style.display = 'block';
document.getElementById('noScript').style.display = 'none';
</script>
我不知道是什么导致了<noscript>
的问题,但我知道你的方法是错误的。
查看两个版本的输入表单—除了以下不同之处,它们是完全相同的:
- 脚本版本在
<form>
及其元素上添加id
属性。 -
<noscript>
版本将action
和method
属性添加到<form>
,required
属性添加到几个元素。
你应该做的是有一个单一的这个形式的实例,并将它用于这两个目的。添加来自两个版本的表单的所有属性。id
属性在没有js的情况下不会有任何影响,action
/method
和required
属性在使用JavaScript处理提交时也不会有任何影响。(就像往常一样,通过.preventDefault()
调用来抑制正常的表单提交。)
所以表单最终是这样的:
<form id="animate" action="process.php" method="post" >
<input id="name" name="Name" type="text" value=""
placeholder="Your Name" required="" maxlength="25">
<input id="email" name="Email" type="text" value=""
placeholder="Your E-mail" required="" maxlength="100">
<textarea id="Message" name="Message" placeholder="Your Message"
spellcheck="true" rows="6" required="">
</textarea>
<input id="spam" type="text" name="spam"
style="display: none;" value="">
<input id="submit" type="submit" name="submit" value="Submit">
</form>
您的页面在<noscript>
部分也有<h2>
和<h3>
标签,在脚本版本中有"谢谢"<div>
,但您可以根据需要使用其他答案中建议的技术隐藏和显示这些标签。
为什么不使用js隐藏非js表单
<html>
<head>
<script>
document.write('<style>.nonjs { display:none}</style>');
<script>
大多数人处理这个问题的方法是把no-js
类放在他们的HTML中,并包括Modernizr库,它会删除它并用js
代替它-这样你就可以包括以下CSS:
html.js #noScript {
display: none;
}
…和脚本浏览器不会显示第二个表单。
如果你不想包含所有的Modernizr,只要确保你的HTML有一个类:
<html class="no-js">
然后在<head>
中包含以下代码:
void function addScript(){
var html = document.lastChild;
html.className = html.className.replace('no-js','js');
}();
脚本浏览器将读取并执行该脚本,该脚本将替换类。现在你可以调整你的CSS只针对脚本浏览器:
html.js #noScript {
display: none;
}
排序!不需要让页面呈现表单,然后用JS删除它。不需要在<noscript>
中嵌套它。根据脚本的存在,简单地显示或不显示它。这种技术的优点在于您可以扩展它:可以将类js-only
或no-js-only
添加到元素中,以指定它们应该在哪种情况下显示,等等。
我发现当你在noscript标签中有错误格式的html时,这种情况往往会发生,例如将html与xhtml混合(坏习惯),例如html页面的doc类型为html:
<noscript>
<img src="image.jpg" />
</noscript>
代替:
<noscript>
<img src="image.jpg" >
</noscript>
似乎会导致这个问题,但是这似乎不会导致no script标签之外的问题,至少在所有主要浏览器中都是如此。
作为上述使用noscript标签以外的其他内容的答案。忘记moddenizer的荒谬的大量代码来做一些简单的事情!
你可以使用class="noscript"设置div,默认隐藏其他内容,然后使用script隐藏noscriptdiv并显示其他启用js的内容。
这样做的好处是,在启用js的浏览器无法下载脚本的情况下也可以正常工作,这种情况可能由于各种原因而发生。这种方法的缺点是,即使浏览器启用了js,像img标记这样的外部内容仍然会被浏览器预加载器下载,所以这就是noscript标记可以更好的地方。最好的方法当然取决于你在做什么
- 使用JS从选择和文本输入中捕获值,并将输出返回到HTML
- 当在文本框中搜索关键字时,我会得到以前的结果作为输出
- 它在另一个函数中嵌套后不会输出文本
- 有没有一种方法可以从两个标签之间提取文本,并以我选择的格式输出
- 输出文本不't以正确格式显示
- Javascript重复模式匹配,然后输出到文本区域
- 具有.txt输出的富文本编辑器
- 使用 clearRect() 覆盖画布上的文本输出
- 如何在文本框中显示内部 HTML 输出
- 使用构造函数 - 原型从文本框输出值
- 将禁用的输出字段更改为带前缀的文本
- 从一个文本框执行代码,并在另一个文本框中以 HTML 显示输出
- 如何将文本输出到不是't输入不同颜色的文本
- 如何在 p5.js 中将 For 循环的文本输出替换为不同的值
- 将文本输入到 .html1,将相同的文本输出到 .html2
- 检查是否将某些文本输出到屏幕PHP
- 如何渲染QuillJS富文本输出到HTML
- 以可变颜色和可变文本输出文本到页面
- 创建包含可变文本输出的网页
- (JavaScript)随机文本输出-建议