Hrefs与JavaScript onclick(关于不引人注目的JavaScript)

Hrefs与JavaScript onclick(关于不引人注目的JavaScript),javascript,html,dom-events,unobtrusive-javascript,Javascript,Html,Dom Events,Unobtrusive Javascript,关于使用链接/标签和显式href指向站点中其他页面(即href=“/blah/blah/blah/blah.html)的最佳实践是什么,与没有显式href的href/divs/etc相比,它们的onclick设置在document ready处理程序中,比如main.js文件中的JavaScript 在web开发方面,我不是一个专家,但我很喜欢学习jQuery之类的东西,我发现自己认同低调JavaScript的概念。虽然上述两个选项都没有打破那种“HTML中没有JavaScript”的心态,但我

关于使用链接/标签和显式href指向站点中其他页面(即
href=“/blah/blah/blah/blah.html
)的最佳实践是什么,与没有显式href的href/divs/etc相比,它们的onclick设置在document ready处理程序中,比如main.js文件中的JavaScript

在web开发方面,我不是一个专家,但我很喜欢学习jQuery之类的东西,我发现自己认同低调JavaScript的概念。虽然上述两个选项都没有打破那种“HTML中没有JavaScript”的心态,但我想我还是挂断了结构和表示与行为的分离”虽然我在其中添加一个标记并显式设置href是比较自然的,但我发现自己认为这实际上是行为,因此应该在JS中设置

这会走得很远吗,还是我只是不习惯?我的另一面看到了将它放在JS、b/c中的好处现在我有能力完全控制该链接的行为,而不必在HTML中更改任何内容。我猜你会说我在众所周知的围栏上。请帮我下来。=)


(注意:该网站大量使用JavaScript,因此关闭JS后提供功能的想法并不令人担忧,因为没有它,大多数网站都无法正常运行。)

普通用户不会真正了解两者的区别。但是,搜索引擎和SEO实践要求您使用href=”“如果希望爬行器跟随其他页面,请链接到其他页面。如果访问者正在使用一些屏幕阅读器或有一些特殊的可访问性需求,则与此相同。许多人阅读源代码而不是DOM

通常,如果要链接到页面和操作,请使用href


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

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

  • 这主要是一些棘手的代码,应该避免使用
  • 它不会给你的网站带来任何实质性的好处
  • 对于无js没有雄辩的退路
  • 它对搜索引擎优化有负面影响。具体来说,机器人不会运行你的脚本,因此看不到链接,最终也不会正确索引你的站点
  • 可能最重要的是,这种效果会严重影响屏幕阅读器或禁用JS的用户的用户体验(例如,许多手机浏览器禁用JS)

  • 最后,除非你明确需要打破这种模式(例如传统支持),否则你应该尽最大努力遵循不引人注目的设计,这在某种意义上是非常突出的,因为你正在使用JavaScript创建一个静态结构,使用HTML做这件事要好得多。

    同意其他海报。我要补充的是,如果HREF是静态的,也就是说,页面上的交互不改变它的值——那么你可以把它看作是页面的“结构和呈现”的一部分。在不寻常的情况下,它是动态的,页面上的某些操作改变了它的值——这就是它变成“行为”的时候——只有这样,才适合让JS来处理它


    另一方面,如果现有代码已经有了9个动态设置的href,而您只是添加了一个静态href,我可能会遵循前面的开发人员的指导来提高可读性。

    jquery历史插件非常好,它允许您设置href='.\url“通过这种方式,您可以拥有真实的url、真实的后退按钮,但您的处理程序只监听绑定到history.url的事件

    对于使用屏幕阅读器的视障用户来说,不使用标签也可能存在某种可用性问题。

    链接不是行为——它们代表一个文档和另一个文档之间的链接。Web浏览器提供了当您单击链接时导航到链接页面的行为,但这是浏览器的行为,并且每个浏览器都有自己的最佳操作约定-例如,主单击可能会在当前选项卡中打开页面,中键单击可能会在新选项卡中打开,M4可能会在新页面中打开链接。用行为替换这些原始信息会破坏浏览器提供此类选择的能力


    还有其他客户也会受到影响。爬行器和其他机器人将读取您的页面,以获取锚定标记中的信息,从而确定页面链接到什么。如果你改为使用“行为”,你就是在从页面中剥离这些有意义的信息。

    我没有想到搜索引擎的角度,这是一个很好的观点。在这种情况下,该站点是用于内部web应用程序的,所以这并不重要,但我认为从更一般的意义上讲,这将是使用hrefs的一个强有力的理由。谢谢你的意见。