【发布时间】:2009-07-16 04:35:41
【问题描述】:
我想获取任何浏览器的 javascript 状态。 这个怎么弄?
意味着当页面加载时,它应该显示该浏览器中的 javascript 是启用还是禁用。
我正在使用 php。
提前谢谢......
【问题讨论】:
-
实际上我想在 php 变量中获取任何浏览器的 javascript 状态。所以我可以根据它加载不同的东西......
标签: php javascript
我想获取任何浏览器的 javascript 状态。 这个怎么弄?
意味着当页面加载时,它应该显示该浏览器中的 javascript 是启用还是禁用。
我正在使用 php。
提前谢谢......
【问题讨论】:
标签: php javascript
为标签中未启用 javascript 的浏览器添加您的消息。
例子:
<noscript>
<p> Javascript is not enabled. Please enable it. <p>
</noscript>
因此,如果没有启用 javascript,则会显示上述消息。
【讨论】:
如果你想在服务器端检测浏览器是否运行 js - 在浏览器中运行一些测试脚本,它将 ajax post 请求和结果发送回服务器
或者让 javascript 设置一个 cookie
然后将结果与预期进行比较。
【讨论】:
可能有点矫枉过正,但此脚本尝试运行函数 jsTest。如果运行,它会将 div 的文本设置为启用 JavaScript。如果它不运行,说明 JavaScript 已禁用的文本将保留。
<html>
<head>
<script type="text/javascript">
function jsTest()
{
var jsStatusDiv = document.getElementById("jsStatus");
jsStatusDiv.innerHTML = "JavaScript Enabled";
}
</script>
</head>
<body onload="jsTest();">
<div id="jsStatus">JavaScript Disabled</div>
</body>
</html>
【讨论】:
在body标签中调用一个javascript函数onload。该函数设置了一个 JavaScript 变量,该变量在此浏览器中启用了 JS。默认情况下,您假定 JS 已禁用。
只有在启用 JS 时才会调用 Javascript,否则不会发生任何事情。在该函数中,您可以使用 document.write 来显示您想要的内容。
【讨论】:
我能想到的最原始的方法是让 HTML 输出一个 JavaScript 函数调用,例如 postbackDoesExecute(),它向 PHP 脚本发出 AJAX 请求,称之为 jsCallback.php。当从 AJAX 请求调用 jsCallback.php 时,它会使用 Javascript = true 或其他内容更新用户的会话(或数据库条目,具体取决于您选择实现它的方式)。如果未记录此条目,则很明显请求已超时或对 postbackDoesExecute() 的 JavaScript 调用从未发生,这意味着 JavaScript 未启用。
只是一个想法......
【讨论】:
如果您需要您的应用程序根据 JavaScript 可用性显示两种不同的状态,您可以尝试一些 hacky,例如创建中间页面。
此页面将包含类似的内容
<meta http-equiv="refresh" content="5;URL=mysite.php?js=0">
<script type="text/javascript">
window.location.replace("mysite.php?js=1");
</script>
这会将使用 Javascript 的人重定向到一个页面,而将其他人重定向到另一个页面。不过这有点hacky。
如果您的用户通过登录页面,您还可以在登录页面中有一个额外的隐藏字段:
<input id="hasJs" type="hidden" name="hasJs" value="">
然后
<script type="text/javascript">
document.getElementById('hasJs').value = '1';
</script>
第 索林
【讨论】: