我想知道是否有人优化他们的网页有一些友好的行为,如果用户禁用JavaScript。在这种情况下是否有任何技巧来提供一些伪脚本行为?我正在谈论基本的东西,比如在新窗口中打开链接。我可以想象,如果没有Javascript,你仍然可以做很多事情。在某些情况下,可能很方便使页面具有可以重新使用的某些功能。有没有做法?Javascript禁用了最佳做法?
编辑:迄今为止回答非常好!人们会介意包括一些示例代码(来吧,HTML太容易了!),因为我不认为我在SO上看到过这样的问题。
我想知道是否有人优化他们的网页有一些友好的行为,如果用户禁用JavaScript。在这种情况下是否有任何技巧来提供一些伪脚本行为?我正在谈论基本的东西,比如在新窗口中打开链接。我可以想象,如果没有Javascript,你仍然可以做很多事情。在某些情况下,可能很方便使页面具有可以重新使用的某些功能。有没有做法?Javascript禁用了最佳做法?
编辑:迄今为止回答非常好!人们会介意包括一些示例代码(来吧,HTML太容易了!),因为我不认为我在SO上看到过这样的问题。
您可以使用< noscript>标签创建超链接,其目标是_blank来打开新窗口。
这对搜索引擎优化也很有用,因此搜索引擎如Google和Yahoo!可以识别和抓取您的网页中的链接。
< noscript>也可以为那些js-disabled浏览器提供正常的功能。
我有时会做的是设置需要Javascript才能显示的功能,然后使用Javascript来显示它们。这样,没有Javascript的人不会看到他们不能使用的功能。然后在<noscript>
标签中添加替代功能。
Stackoverflow以很好的方式处理这个问题。该网站是完全可用的没有Javascript,人们可以提出问题,并回答它们。诸如投票之类的高级功能不起作用。
你必须找到一个妥协之间的时间,你愿意花费,使网站可以使用没有Javascript和功能的数量必须工作。
用于打开新窗口中的链接,你可以使用target =“_空白”
<a href="http://www.google.com" target="_blank">Google</a>
我在哪里工作,我们使用一个登录页面,以确保(在一定程度上)他们有使用Javascript功能,他们获得前进入应用程序...
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>Please Wait...</title>
</head>
<body>
<h1>Please Wait....</h1>
<noscript><h1>You need a JavaScript-enabled browser to use this application!</h1></noscript>
<script type="text/javascript">
<!--
location.href = "FrontPage.aspx";
// -->
</script>
</body>
</html>
此外,我经常惊讶于how powerful CSS can be。
Here's a question(and another)有很多(不同的)观点建立一个网站,优雅地处理JavaScript被禁用。
当您使用JavaScript从一个链接打开一个窗口,你可以把它透明的,这样它会回落到链接的原始行为,如果JavaScript被禁用:
<a href="http://www.guffa.com" target="_blank" onclick="window.open(this.href,this.target,'width=900,height=700');return false;">Guffa</a>
如果启用Javascript ,onclick事件将捕获点击并打开一个窗口,然后它从事件返回false,以便不遵循链接。如果Jasvascript被禁用,则链接将被替代。
+1有些人可能会质疑打开新窗口,但是您的解决方案是我希望/需要时选择的解决方案。请注意用户仍在控制其浏览器,并可能禁止任何新窗口,而是在新标签页甚至同一窗口中打开该URL。 – 2009-03-04 21:23:29
“我会想象还有很多你可以做的没有Javascript” - 有趣的是,不久前,我们做了所有没有JavaScript。
最好的方法就是所谓的'渐进式增强'。原则是制作一些没有JavaScript的东西,然后通过将JavaScript绑定到对象来“附加”其他行为。像jQuery这样的库使得这一点很简单,因为它们支持CSS样式的选择器。这样你就可以应用JS行为,就像应用CSS一样(OK,略微夸张)。
需要考虑一些问题以考虑什么是良好的基线以及如何更改页面。
通常真正的额外工作是在服务器端,您可能必须拥有多个请求处理系统。在一个小小的反应中解决这个问题是一个很大的领域!
此外,它值得考虑谁和为什么用户不使用JavaScript。 Here's something I wrote a while ago on the subject如果你有兴趣。
一个例子?拿一些简单的东西,例如。当用户将鼠标指向它们时,您希望通过表单字段显示漂亮的“工具提示”。在HTML中,这些可以(例如)标记为段落:
<label for="username">User name</label><input type="text" id="username" />
<p>Username must be between 6-8 characters</p>
对于非JS用户,提示可以简单地显示为一个很好的段落。所以你用CSS来设计它。为JS用户提供额外的CSS,默认隐藏段落。所以:2套CSS,一套覆盖另一套。
非JS:
form p {
margin: 10px 0 0 0;
border-bottom: 1px solid grey;
}
记者:你如何运用CSS的JS /非JS情况
form p {
position: absolute; display: none;
width: 180px;
background-image: url(nice-bubble.gif);
padding: 10px;
}
是你。有很多选择。就我个人而言,我喜欢在CSS中编写JS代码,并且在标签中有一个noscript.css变体(即反向工作)。哪个不是有效的XHTML,但很好用。
然后,让一些JS查找元素并管理工具提示的显示代码。例如:
$(document).ready(function() {
$('form input').focus(function() {...display paragraph...});
// etc;
})
这是虚假的代码,但你得到的图片。你最终得到的是一组HTML,2个演示文稿和其他行为,并且没有JS与你自己的HTML纠结在一起。
禁用JavaScript的人可能还会修剪CSS,Java和其他“演示”功能,以节省处理能力,使其功耗更低。 (例如,网络电话或旧型号计算机)。您可以通过向服务器添加简单的功能来缓解这种情况,就像他们在CGI(random intro here)时代所做的一样。在这种情况下,您的服务器可能会将非JS用户重定向到GET/POST页面版本。我也会尽可能简化和修改答案,因为您可能会输出到一个小屏幕。
jQuery真的有帮助。大量的JavaScript插件,(标签,工具提示等等)都以非常有意义的方式编写标记。
例子: 的选项卡插件,您需要创建锚定的div,即
<a href="#Preferences">Preferences</a>
<a href="#Tools">Tools</a>
<div id="Preferences">
blah
</div>
<div id="Tools">
bar
</div>
这是有道理的语义,并且没有标签插件,你得到一些功能。但是,当您启用javascript和jquery-tabs时,您将获得一个非常好的丰富界面。
这真的只是渐进式的增强,正如其他人所指出的那样。编写语义标记,使用CSS对其进行增强,然后使用Javascript对其进行增强。你最终应该为每个人都适用,即使是lynx用户。
小心告诉我你为什么低估了我? – 2010-07-22 14:30:41