【问题标题】:How to check Javascripts are disabled by proxy如何检查 Javascript 被代理禁用
【发布时间】:2020-08-20 14:07:12
【问题描述】:

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

谢谢。

【问题讨论】:

  • 执行 JavaScript 的代理。尽管图像或注入的其他 JavaScript 可能会有一些细微的变化,但这并不重要。如果代理确实禁用了 JavaScript,那么使用此代理的用户在大多数网站上可能会遇到更大的问题。
  • 没错。这就是为什么许多大公司和机构都这样做了,即使是一些聪明的人找到了将他们的安全互联网用于个人用途的方法,他/她也几乎无法使用它。

标签: javascript jquery html wordpress


【解决方案1】:

您可以默认显示消息,然后使用 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

通过divscript 立即(即perfectly fine,不需要“准备好DOM”的东西只会延迟事情),@987654329 的几率@“闪烁”在常见情况下(启用 JavaScript 且未剥离)页面上的短暂性非常低。不是零,而是低。

如果您认为代理不会去除 script 标记,而只是阻止 JavaScript 文件的下载(这将是愚蠢的),您可以将上面的内容更改为使用 JavaScript 文件,但请注意,通过这样做,您要么暂停页面的呈现(如果您使用 &lt;script src="..."&gt;),要么(急剧)增加页面上 div“闪烁”的几率(如果您加载脚本异步)。

这只是称为“渐进增强”(或有时是“优雅降级”,但大多数人更喜欢第一种)的一般实践的特定用例。在这里,您可以确保在 JavaScript 不可用的情况下正确且有用地呈现页面,然后在启用 JavaScript 的情况下使用 JavaScript 向页面添加行为。在这种情况下,你正在做的“有用”的事情是说 JavaScript 由于某种原因没有运行,所以这是一个稍微不同的事情,但它是相同的原理。

【讨论】:

  • 与渐进增强原理相同?
  • @techfoobar:完全一样,事实上,我正在考虑编辑它。 :-)
  • 其实我上大学的时候用大学wifi,它会屏蔽所有js文件,但是页面源中显示的,这就是我发这个问题的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-06
  • 2014-04-10
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
相关资源
最近更新 更多