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可能會在新頁面中打開鏈接。用行爲替換這些原始信息會破壞瀏覽器提供這種選擇的能力。

還有其他客戶也會受到影響。蜘蛛和其他機器人會在您的頁面上讀取錨定標記中的信息,以確定頁面鏈接的內容。如果您改爲使用「行爲」,則會從頁面中剝離出有意義的信息。