5

我假设您不能使用 JavaScript 代码片段来验证浏览器用户是否关闭了 JavaScript。那么我可以用什么代替呢?有人可以提供代码示例吗?

我正在寻找围绕它包装一个 if/then 语句。

我经常用 CFML 编码,如果有帮助的话。

4

16 回答 16

6

这完全是一个技巧,但您可以在 noscript 标记内使用 iframe 来触发 url 上的 HTTP GET,以告诉服务器用户没有启用 javascript。

<body>
...
...
<noscript>
    <iframe src ="/nojs.aspx?SOMEIDENTIFIER=XXXX&NOJS=TRUE" style="display: none;">
    </iframe>
</noscript>
...
...
</body>
于 2008-09-05T02:58:16.397 回答
5

使用 <noscript> HTML 标签。

于 2008-09-05T02:06:20.530 回答
5

不确定您要做什么,但如果您只需要通知用户需要 Javascript,您可以使用“<noscript>”标签。如果您需要知道服务器上的信息,您可以从 javascript 向服务器发出 Ajax 样式请求。如果您收到请求,则 javascript 正在工作,否则它不会。

于 2008-09-05T02:10:40.643 回答
4

我们是否在谈论这样的事情:

JavaScript:

<body>
...
...
<script type="text/javascript">
<!--
document.write("Hello World!")
//-->
</script>
<noscript>Your browser does not support JavaScript!</noscript>
...
...
</body>
于 2008-09-05T02:22:35.343 回答
2

他要求检查是否启用了javascript。我只能想到完全按照 OP 所说的去做 - 如果 JS 被激活,请尝试使用一些带有间隔的 Javascript 来发送回调 - 不幸的是,我认为你不能检查服务器端是否启用了 JS,这就是你使用标签的原因而不是从服务器呈现不同的内容。

于 2008-09-05T02:09:06.747 回答
2

如果您使用Unobtrusive JavaScript,那么您不需要检查用户是否启用了 JavaScript。

如果他们启用了 JavaScript,那么他们将获得完整的效果,但如果他们没有,那么用户仍然可以使用您的网站。除了更好的可访问性之外,您可能会发现这种方法可以提高您的 SEO。

于 2008-09-05T08:19:48.510 回答
1
<noscript>
    ...some non-js code
</noscript>
于 2008-09-05T02:06:37.223 回答
1

是的,NoScript 片段是正确的。

于 2008-09-05T06:55:06.920 回答
0

您可能有 javascript 执行一些 AJAX 查询并检查它是否有。那些下载页面但不执行查询的人要么禁用了 JS,要么他们是机器人。

于 2008-09-05T02:06:53.710 回答
0

实际上,您所能做的就是在标签中添加一些信息。我似乎记得在某个地方的 ASP.NET 上尝试过这个,但你真的只能判断浏览器是否支持 Javascript,而不是它是否真的被允许/启用。

于 2008-09-05T02:10:20.613 回答
0

我对 CFML 了解不多,但 .NET 具有检测浏览器功能的能力。但是,它无法检测浏览器是否支持javascript,而是将其关闭。所以,你也被困在那里。

除了 HTML noscript 标记,据我所知,除了渐进式编写 javascript(请参阅渐进增强)以便您无需检查 Javascript:off 之外,您无能为力。

于 2008-09-05T02:10:29.117 回答
0

我不知道JS,但是可以用JS修改页面内的链接吗?如果有人转到未修改的链接,他们没有使用 JS,但如果他们这样做,那么他们正在使用 JS。这有道理吗?

于 2008-09-05T02:10:58.460 回答
0

从来没有想过如何在没有往返的情况下做到这一点,所以这取决于你的目标是什么。

如果他们必须有javascript才能继续,那么我(在.net中)做了一些事情,比如在服务器端禁用登录按钮,然后用javascript启用它的客户端,并使用noscript标签来显示错误消息。

如果它必须以任何一种方式工作,您可以使用渐进增强,和/或使用js设置隐藏字段然后设置会话变量,但这意味着直到他们到达第二个请求您才知道。

于 2008-09-05T02:56:57.973 回答
0

你可以写

<script type="text/javascript" language="javascript">document.write("<input type='hidden' name='hasJs' value='1' />");

或者通过 js 写一个 cookie,然后在服务器上读取它,如果你想检查服务器端的 js。

于 2008-09-05T08:39:29.087 回答
0

如果您正在寻找一种在服务器端检查它的方法,您可以向用户发送一个放置 cookie 的 js ......如果 cookie 存在于 aa 请求中,那么您可以判断脚本是否有效!

于 2014-06-02T14:47:42.643 回答
0

一种可靠的方法是使用 javascript 的 $.post 向您的服务器发送注释。(抱歉,如果这有任何错误,请在我的脑海中写下,稍后会在我开始测试时更新)。应该允许您构建它,这样您甚至可以从会话数据中提取它们(如果他们使用 javascript),这将允许您为 javascript 提供替代品,而无需求助于 .

您的页面脚本:

<script>
function myJavascriptTest(){
    $.post ()('myJavascriptTest.php', {myJavascriptOn: true}, function(){
    return true;
}
myJavascriptTest()
</script>

在目标 .php 中...

<?php

if ($_POST['myJavascriptOn'] == true){
    $_SESSION['javascriptIsOn'] = true;
} else {
    $_SESSION['javascriptIsOn'] = false;
}
?>
于 2015-02-23T17:05:49.810 回答