Javascript 是否有与<;noscript>;?
HTML中是否有一个标记,只有启用JavaScript时才会显示其内容?我知道Javascript 是否有与<;noscript>;?,javascript,html,noscript,Javascript,Html,Noscript,HTML中是否有一个标记,只有启用JavaScript时才会显示其内容?我知道的工作方式正好相反,当JavaScript关闭时显示其HTML内容。但是我只想在有JavaScript的情况下在站点上显示一个表单,告诉他们如果没有,为什么不能使用表单 我知道的唯一方法是使用document.write()方法,对于大量HTML来说似乎有点凌乱。当页面加载时,可以通过JavaScript显示一个不可见的div。还可以使用JavaScript从另一个源文件加载内容并输出。这可能比你想要的要多一些 在这里
的工作方式正好相反,当JavaScript关闭时显示其HTML内容。但是我只想在有JavaScript的情况下在站点上显示一个表单,告诉他们如果没有,为什么不能使用表单
我知道的唯一方法是使用
document.write()脚本标记中的code>方法,对于大量HTML来说似乎有点凌乱。当页面加载时,可以通过JavaScript显示一个不可见的div。还可以使用JavaScript从另一个源文件加载内容并输出。这可能比你想要的要多一些 在这里让人想起,但是它只适用于使用ASP.NET的情况——它可以在JavaScript中进行模拟,但是您必须再次使用document.write() 可以将段落| div的可见性设置为“隐藏”
然后在“onload”函数中,可以将可见性设置为“visible”
比如:
除非javascript可用,否则此文本将被隐藏。
没有相应的标记。您需要使用javascript来显示文本
一些人已经建议使用JS动态设置CSS可见。您还可以使用document.getElementById(id).innerHTML=“My Content”
动态生成文本,或者动态创建节点,但是CSS破解可能是最简单易懂的方法。下面是隐藏div方式的示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
*[data-when-js-is-on] {
display: none;
}
</style>
<script>
document.getElementsByTagName("style")[0].textContent = "";
</script>
</head>
<body>
<div data-when-js-is-on>
JS is on.
</div>
</body>
</html>
*[打开js时的数据]{
显示:无;
}
document.getElementsByTagName(“样式”)[0]。textContent=“”;
JS正在播放。
(你可能需要为可怜的IE调整一下,但你明白了。)我能想到的最简单的方法:
<html>
<head>
<noscript><style> .jsonly { display: none } </style></noscript>
</head>
<body>
<p class="jsonly">You are a JavaScript User!</p>
</body>
</html>
.jsonly{显示:无}
您是一个JavaScript用户
无文档、无脚本、纯CSS。首先,始终将内容、标记和行为分开
现在,如果您正在使用jQuery库(您确实应该这样做,它使JavaScript变得更容易),那么以下代码应该可以:
$(document).ready(function() {
$("body").addClass("js");
});
当启用JS时,这将在主体上为您提供一个额外的类。
现在,在CSS中,您可以在JS类不可用时隐藏该区域,并在JS可用时显示该区域
或者,您可以将no js
作为默认类添加到body标记中,并使用以下代码:
$(document).ready(function() {
$("body").removeClass("no-js");
$("body").addClass("js");
});
请记住,如果禁用CSS,它仍然会显示。我并不完全同意这里关于预先嵌入HTML并用CSS隐藏它直到它再次用JS显示的所有答案。即使启用了w/o JavaScript,该节点仍然存在于DOM中。诚然,大多数浏览器(甚至是可访问性浏览器)都会忽略它,但它仍然存在,而且可能会有奇怪的时候,它会反过来咬你
我首选的方法是使用jQuery生成内容。如果内容很多,那么您可以将其保存为HTML片段(仅显示希望显示的HTML,而不显示HTML、body、head等标记),然后使用jQuery的ajax函数将其加载到整个页面中
test.html
$(文档).ready(函数(){
$.get(''u test.html',函数(html){
$('p:first')。在(html)之后;
});
});
这是页面顶部的内容
这是页面底部的内容
_test.html
这是一个HTML片段文档
结果
这是页面顶部的内容
这来自一个HTML片段文档
这是页面底部的内容
我有一个简单而灵活的解决方案,有点类似于Will的解决方案(但具有作为有效html的附加好处):
给body元素一个“jsOff”类。用JavaScript删除(或替换)此文件。让CSS隐藏任何类为“jsOnly”的元素和类为“jsOff”的父元素
这意味着如果启用了JavaScript,“jsOff”类将从主体中删除。这意味着类为“jsOnly”的元素不会有类为“jsOff”的父元素,因此不会与隐藏它们的CSS选择器匹配,因此将显示它们
如果禁用JavaScript,“jsOff”类将不会从主体中删除。带有“jsOnly”的元素将有一个带有“jsOff”的父元素,因此将匹配隐藏它们的CSS选择器,因此它们将被隐藏
代码如下:
<html>
<head>
<!-- put this in a separate stylesheet -->
<style type="text/css">
.jsOff .jsOnly{
display:none;
}
</style>
</head>
<body class="jsOff">
<script type="text/javascript">
document.body.className = document.body.className.replace('jsOff','jsOn');
</script>
<noscript><p>Please enable JavaScript and then refresh the page.</p></noscript>
<p class="jsOnly">I am only shown if JS is enabled</p>
</body>
</html>
我的解决方案
.css:
.js {
display: none;
}
$(document).ready(function() {
$(".js").css('display', 'inline');
$(".no-js").css('display', 'none');
});
<span class="js">Javascript is enabled</span>
<span class="no-js">Javascript is disabled</span>
.js:
.js {
display: none;
}
$(document).ready(function() {
$(".js").css('display', 'inline');
$(".no-js").css('display', 'none');
});
<span class="js">Javascript is enabled</span>
<span class="no-js">Javascript is disabled</span>
.html:
.js {
display: none;
}
$(document).ready(function() {
$(".js").css('display', 'inline');
$(".no-js").css('display', 'none');
});
<span class="js">Javascript is enabled</span>
<span class="no-js">Javascript is disabled</span>
Javascript已启用
Javascript已禁用
自从提出这个问题以来的十年里,这个问题被添加到HTML中。它允许直接隐藏元素而不使用CSS。与基于CSS的解决方案一样,元素必须通过脚本取消隐藏:
<form hidden id=f>
Javascript is on, form is visible.<br>
<button>Click Me</button>
</form>
<script>
document.getElementById('f').hidden=false;
</script>
<noscript>
Javascript is off, but form is hidden, even when CSS is disabled.
</noscript>
Javascript已打开,窗体可见。
点击我
document.getElementById('f')。hidden=false;
Javascript关闭,但表单隐藏,即使禁用CSS也是如此。
至少在xhtml标准中是不允许的。@Dykam:在HTML5中是允许的,实际上,几乎每个浏览器都支持它。建议使用显示:无!重要提示
,以防止它被更具体的规则(例如,id或css选择器)覆盖,这些规则的目的是在启用脚本时使用。警告一句:当前版本的Chrome不会在首选项中禁用Javascript后第一次刷新页面时解析
中的标记。你需要点击两次重新加载才能让它工作。干净、简洁,不使用javascript。我喜欢它。在您的html示例中,d