好的,我知道您的网站在禁用javascript的情况下正常运行非常重要。
在我看来,开始考虑如何设计此类网站的一种方法是在主页上检测javascript,如果没有启用,则重定向到另一个版本的网站,该网站不是javascript代码并且使用纯HTML(如gmail)< / p>
我想到的另一种方法是,例如在网页上的对话框中考虑X(关闭按钮)。如果在没有任何javascript干扰的情况下按下X会导致向服务器发送请求,而在服务器端我们在下次渲染页面时隐藏该对话框,并且我们还将javascript函数绑定到链接的onclick,如果是启用JavaScript后,它会立即隐藏对话框。
你怎么看待这个?你会如何设计一个支持两者的网站?
答案 0 :(得分:12)
解决这个问题的一种方法是:
这样,如果JS被禁用,该网站的“第一”版本仍然有效。
你可以用CSS完全一样,自然 - 每天甚至有一个“CSS Naked Day”,显示没有CSS的网站是什么样的^^
一个例子?
在这种情况下,如果禁用了javascript,则第一种“标准”处理方式仍然有效。
的(部分)答案 1 :(得分:2)
通常的方法是所谓的progressive enhancement。
基本上,您需要一个简单的HTML网站,其中包含常规表格 下一个增强功能是CSS - 你让它看起来很好 然后你可以使用Javascript进一步增强它 - 你可以添加或删除元素,添加效果等等。
基本HTML总是适用于旧版浏览器(例如带有脚本拦截器的浏览器)。
例如,发表评论的表单可能如下所示:
<form action="post-comment.php" method="post" id="myForm">
<input type="text" name="comment">
</form>
然后你可以使用javascript来增强它以使其成为AJAXy
$('#myForm').submit(...);
理想情况下,AJAX回调应该使用与post-comment.php相同的代码 - 通过调用相同的文件或通过include
,然后您不必重复代码。
答案 2 :(得分:2)
最好的方法是设计一个没有JS就能充分发挥作用的页面。然后添加一个&lt; script&gt;阻止在&lt; body&gt;的底部代码如下:
window.onload = function() {
// Do DOM manipulations to add JS functionality here. For instance...
document.getElementById('someInputField').onchange = function() {
// Do stuff here that you can't do in HTML, like on-the-fly validation
}
}
研究jQuery示例。他们展示了很多像这样的东西。这被称为“不引人注目的JavaScript”。谷歌为此寻找更多的例子。
编辑:上面的jQuery版本是:
$(document).ready(function() {
// Do DOM manipulations to add JS functionality here. For instance...
$('#someInputField').change(function() {
// Do stuff here that you can't do in HTML, like on-the-fly validation
});
});
我添加这个只是为了显示jQuery与标准DOM操作的较低级别。 window.onload和document.ready之间存在细微差别,在jQuery文档和教程中进行了讨论。
答案 3 :(得分:2)
使用渐进式增强功能,研究jquery以了解它。你需要花一些时间来解决它。例如你的想法:
在主页上检测javascript 如果它没有启用重定向到 这样做的另一个版本的网站 不是javascript代码并且可以使用 纯HTML
你如何检测javascript是否被禁用?没有javascript,显而易见......
你正在考虑错误的方法:最基本的版本必须是默认版本,然后,如果你检测到更高级的功能,你可以使用它们。尽可能避免为不同的弓箭手/能力避免单独的版本。要让所有版本保持同步并保持最新状态,这需要做很多工作。
一些很好的资源可以帮助你入门:
答案 4 :(得分:2)
对于禁用JavaScript,使您的网站正常运行并不重要。禁用JavaScript的人是那些想要破解网站漏洞的人,他们不值得正确导航。不要浪费你的努力。没有JavaScript,每个人都知道Web是不可能的。
唯一需要注意的是表单:不要相信JavaScript中的过滤器,始终在服务器端再次过滤它,总是!
答案 5 :(得分:1)
你的目标是progressive enhancement。我首先设计没有JavaScript的网站,一旦它工作,就开始通过jQuery这样的库添加你的JavaScript事件,这样网站的行为就完全独立于演示了。这样,您可以为在浏览器中启用了JavaScript的用户和不在浏览器中启用JavaScript的用户提供更高级别的功能和润色。