2

我不知道天气有没有办法解决这个问题,但我只是问它,因为我相信 SO 是一个天才的地方。无论如何,我们都知道,如果我们使用<noscript></noscript>HTML 文档中的标签,并且如果任何正在查看此页面并在其浏览器中禁用 JavaScript 的用户将看到无脚本消息。但是如果 JavaScript 被代理禁用了怎么办?许多 wifi 网络需要手动输入一些代理才能使用互联网,其中许多网络从代理服务器禁用了该代理上的 JS。在这种情况下,如果有人访问同一页面,该页面将看到 JavaScript 已从浏览器启用,但已从代理禁用。如果有任何方法可以检查天气 JavaScript 是否已被任何代理(如果使用)禁用并为此显示警报消息?如果有人能说如何用 Wordpress 和没有 wordpress 来实现它,我也会很高兴。:)

谢谢。

4

1 回答 1

4

您可以默认显示消息,然后使用 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 由于某种原因没有运行,所以这是一个稍微不同的事情,但它是相同的原理。

于 2013-05-04T13:27:37.507 回答