通常,当一个页面被加载,并且浏览器禁用了 Javascript 时,我们使用<noscript>
标签来写一些类似警告的东西,并告诉客户端启用 Javascript。但是,Facebook,即使您在启用 JS 的情况下加载页面后,当它被禁用时,您也会收到通知。我怎么能做这样的事情?
更新:此机制在 Facebook 中不再可用,但以前,我问这个问题为时已晚,但如果找到任何答案,我将不胜感激。
我试过的
我想在我的页面中有一个片段,它会不断检查是否禁用了 Javascript,如果是,则显示<noscript>
.
为了实现这一点,我创建了一个页面CheckJS.html。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="0">
</head>
<body>
<noscript>
JS is disabled!
</noscript>
</body>
</html>
这个页面会不断刷新,当JS被禁用时,JS被禁用!会出现。
将此页面添加到我的原始页面中。我尝试了以下方法:
1- .load()
我使用JQuery在. 但是,似乎只加载CheckJS.html的内容。表示元素及其内部的内容不会加载到..load('CheckJS.html')
div
.load()
<body>
<head>
div
2- iframe
经过一番搜索,我发现加载完整html 页面的<head>
唯一可能方法是使用<iframe>
.
<iframe src="CheckJS.html"></iframe>
但是,<meta http-equiv="refresh" content="0">
CheckJS.html的影响父页面,原来的页面本身开始刷新。
如果我们能够在<iframe>
不强制刷新原始页面的情况下使用它,那么这可能是一个解决方案,但即使找到了这个解决方案,我觉得它更像是一个技巧而不是真正的解决方案。
更新
安东尼的回答证明我错了iframe
刷新原始页面,浏览器显示刷新但实际上不是,如果是这样,那么可以避免使用JavascriptCheckJS.html
,我提供的可以完成这项工作,甚至更好,<noscript>
重新启用 JS 时将隐藏。整个 iframe 方法仍然不是那么用户友好(可能会冻结浏览器),除非每 10 秒左右刷新一次,这不是即时检测。