您可以默认显示消息,然后使用 JavaScript 将其删除或隐藏,例如:
<div id="jsalert">JavaScript is disabled in your environment.</div>
<script>
(function() {
var elm = document.getElementById("jsalert");
elm.parentNode.removeChild(elm);
})();
</script>
<!-- Continue your content here -->
如果script
标签已被代理剥离(我相当肯定这是非常不寻常的;至少,我从未见过它),那么脚本当然不会在那里运行,并且div
会显示。如果script
存在,它将删除div
.
通过立即div
执行(非常好,不需要“准备就绪”的东西只会延迟事情),在常见情况下页面上短暂“闪烁”的可能性(启用 JavaScript 并且没有被剥离)出)非常低。不是零,而是低。script
div
如果您认为代理不会去除script
标签,而只是阻止 JavaScript 文件的下载(这将是愚蠢的),您可以将上面的内容更改为使用 JavaScript 文件,但请注意,这样做会阻碍渲染你的页面(如果你使用<script src="...">
)或者你(戏剧性地)增加div
页面上“闪烁”的几率(如果你异步加载脚本)。
这只是称为“渐进增强”(或有时“优雅降级”,但大多数人更喜欢第一种)的一般实践的一个特定用例。在这里,您可以确保在 JavaScript 不可用的情况下正确且有用地显示页面,然后在启用 JavaScript 的情况下使用 JavaScript 向页面添加行为。在这种情况下,你正在做的“有用”的事情是说 JavaScript 由于某种原因没有运行,所以这是一个稍微不同的事情,但它是相同的原理。