5

有关使用链接/ <a> a带有显式hrefs的标签的最佳做法是指向您网站中的其他页面(即href =“/ blah/blah/blah.html )vs拥有hrefs/divs等,它们没有明确的href,并且它们的onclick在使用JavaScript的文档就绪处理程序中设置为main.js文件。Hrefs vs JavaScript onclick

我不是专家到web开发,但我很享受学习jQuery等,并发现自己订阅了Unobtrusive JavaScript的概念,虽然上面的两个选项都没有打破这种心态的“HTML内没有JavaScript”的部分,但我想我挂上了“行为结构和表现的分离”,虽然它是广告对我来说更加自然的是把一个<一个>标签放在那里,并明确地设置href,我发现自己以为这是真正的行为,因此应该在JS中设置。

这是要走多远,还是我只是不习惯呢?我的另一面看到将它放入JS,b/c中的好处,现在我可以完全控制该链接的行为,而无需在HTML中更改任何内容。我猜你会说我在谚语上。请帮助我失望。 =)

(一注:该网站使用JavaScript严重,所以提供的功能与JS的概念关掉是不是真的,因为大多数网站都不会没有它担心)

回答

10

由于多种原因,这确实太过分了。

  1. 它主要是一些棘手的代码,应该避免。
  2. 它没有提供给您的网站实际利益。
  3. no-js没有雄辩的回退。
  4. 它对SEO有负面影响。具体来说,机器人不会运行你的脚本,因此不会看到链接,并最终而不是索引您的网站正确。
  5. 也许最重要的是,这种影响可能会严重影响UX为禁用屏幕阅读器的用户或具有JS(例如,很多手机浏览器禁用JS)

最后,除非你有明确的需要打破模具(例如传统支持),你应该尽量遵循不引人注目的设计,这是非常突出的,因为你正在使用JavaScript来创建一个静态结构,这对于HTML来说要好得多。

6

普通用户将不会真正了解其中的差异。但是,搜索引擎和SEO实践会要求您使用href =“”链接到您的其他页面,如果您想让蜘蛛追踪它们。与访问者使用某些屏幕阅读器或具有某些特殊的可访问性需求一样。其中许多人阅读源代码而不是DOM。

一般来说,如果您要链接到页面和操作,请使用href。

如果您需要附加附加功能或不真正转到其他页面或操作,请使用javascript onclick样式,或者使用jQuery来附加事件。

+0

我没有想到搜索引擎的角度,这是一个很好的观点。在这种情况下,该网站适用于内部Web应用程序,因此它并不重要,但我认为从更普通的意义上讲,这是使用hrefs的强有力的理由。感谢您的意见。 – 2010-10-28 04:11:57

1

同意其他海报。我会补充一点,如果href是静态的 - 那就是页面上的交互不会改变它的值 - 那么你可以把它看作页面“结构和表示”的一部分。在动态变化的例外情况下,页面上的某些操作会改变它的值 - 也就是当它变成“行为”时 - 只有这样才能让JS处理它。另一方面,如果现有的代码已经有了一个动态设置的hrefs,并且你只是添加了一个静态href,我可能会按照以前的开发人员的指导来提高可读性。

1

jQuery的历史插件是相当不错的,它允许你设置href ='#/ url“这种方式你可以有真正的网址,真正的后退按钮,但是你的缰绳只是听取history.url绑定的事件

http://tkyk.github.com/jquery-history-plugin/

不使用标签很可能也有某种为视觉障碍的用户使用屏幕阅读器的可用性问题

4

链接是行为 - 它们代表一个文件,彼此之间联系的Web浏览器。提供navigati的行为当您点击链接时链接到链接的页面,但这是浏览器的行为,并且每个浏览器都有自己的约定,以便如何做到这一点 - 例如,主要点击可能打开当前标签中的页面,中点击可能在新标签中打开,M4可能会在新页面中打开链接。用行为替换这些原始信息会破坏浏览器提供这种选择的能力。

还有其他客户也会受到影响。蜘蛛和其他机器人会在您的页面上读取锚定标记中的信息,以确定页面链接的内容。如果您改为使用“行为”,则会从页面中剥离出有意义的信息。