2009-03-04 36 views
8

我想知道是否有人优化他们的网页有一些友好的行为,如果用户禁用JavaScript。在这种情况下是否有任何技巧来提供一些伪脚本行为?我正在谈论基本的东西,比如在新窗口中打开链接。我可以想象,如果没有Javascript,你仍然可以做很多事情。在某些情况下,可能很方便使页面具有可以重新使用的某些功能。有没有做法?Javascript禁用了最佳做法?

编辑:迄今为止回答非常好!人们会介意包括一些示例代码(来吧,HTML太容易了!),因为我不认为我在SO上看到过这样的问题。

回答

3

您可以使用< noscript>标签创建超链接,其目标是_blank来打开新窗口。

这对搜索引擎优化也很有用,因此搜索引擎如Google和Yahoo!可以识别和抓取您的网页中的链接。

< noscript>也可以为那些js-disabled浏览器提供正常的功能。

11

我有时会做的是设置需要Javascript才能显示的功能,然后使用Javascript来显示它们。这样,没有Javascript的人不会看到他们不能使用的功能。然后在<noscript>标签中添加替代功能。

+0

小心告诉我你为什么低估了我? – 2010-07-22 14:30:41

4

Stackoverflow以很好的方式处理这个问题。该网站是完全可用的没有Javascript,人们可以提出问题,并回答它们。诸如投票之类的高级功能不起作用。

你必须找到一个妥协之间的时间,你愿意花费,使网站可以使用没有Javascript和功能的数量必须工作。

5

用于打开新窗口中的链接,你可以使用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

3

当您使用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被禁用,则链接将被替代。

+0

+1有些人可能会质疑打开新窗口,但是您的解决方案是我希望/需要时选择的解决方案。请注意用户仍在控制其浏览器,并可能禁止任何新窗口,而是在新标签页甚至同一窗口中打开该URL。 – 2009-03-04 21:23:29

3

“我会想象还有很多你可以做的没有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纠结在一起。

1

禁用JavaScript的人可能还会修剪CSS,Java和其他“演示”功能,以节省处理能力,使其功耗更低。 (例如,网络电话或旧型号计算机)。您可以通过向服务器添加简单的功能来缓解这种情况,就像他们在CGI(random intro here)时代所做的一样。在这种情况下,您的服务器可能会将非JS用户重定向到GET/POST页面版本。我也会尽可能简化和修改答案,因为您可能会输出到一个小屏幕。

0

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用户。