第十三天:使用真實鏈結
網頁設計的苦難根源乃是「 javascript:
」鏈結;這個假鏈結會在妳按下的時候執行一段 Javascript 程式碼。這個問題最常發生於,網誌用這種鏈結來在另一個視窗裡顯示迴響。為什麼這會是個問題呢?因為有 11% 的網際網路使用者因為某些原因而不使用 Javascript ;這同時也包括許多殘障的朋友,因為她們所能夠使用的瀏覽器就是不支援。這種假鏈結對她們來說不能用,妳應當改用真實的鏈結。
雖然這個問題很容易描述及修改,但是無論我多麼強調這個訣竅的重要性也都不為過。多數問題,像是不提供跳過導覽列的「跳過鏈結」都祇不過會在某種程度上減低可用性罷了,至少妳的頁面還能夠被讀取。但是現在我們所遇到的這個問題,卻會讓重要的內容幾乎完全無法被取得。如果妳的迴響被藏在某個「 javascript:
」鏈結之後,就幾乎不存在了。
誰因此獲益?
- Marcus 從中獲益了。因為 Lynx 並不支援 Javascript 。
- Michael 從中獲益了。因為 Links 並不支援 Javascript 。
- Lillian 從中獲益了。雖然她用的是 Internet Explorer ,但是資訊部門祇允許某些獲准的站台使用 Javascript ,而把其他站台的 Javascript 給擋掉了;很不幸地,妳的站台並不在這些獲准的站台中。
- Google 從中獲益了。因為 Google 會跟著鏈結來尋找更多內容並加以建立索引,但是它卻無法使用「
javascript:
」鏈結;因為當它索引網頁時並不會執行任何 Javascript 程式碼。
怎麼做
現在 Movable Type 和 Radio 的預設模版都把這個部分處理好了,所以妳無須再做任何處理。檢視妳的首頁並搜尋「 javascript:
」;如果完全找不到,那麼也用不到今天的訣竅了。
然而,如果妳的 Movable Type 模版包含有像這樣的鏈結:
<a href="javascript:OpenComments(<$MTEntryID$>)">Comments (<$MTEntryCommentCount$>)</a>
就請把它改成這樣:
<a href="<$MTCGIPath$>mt-comments.cgi?entry_id=<$MTEntryID$>" onclick="OpenComments(<$MTEntryID$>); return false">Comments (<$MTEntryCommentCount$>)</a>
在支援 Javascript 的瀏覽器裡,原來的鏈結仍會具有相同的作用;因為 onclick
屬性會優先於 href
屬性。所以在新版裡,仍然會叫用 OpenComments
函式,然後彈出新視窗。然而在不支援 Javascript 的瀏覽器(還有 Google )的情況下,就會完全忽略 onclick
屬性,而祇從 href
屬性來連結,用同一個視窗來顯示評論。
如果妳因為其他原因而用了 javascript:
假鏈結的話,停。請停止這個習慣,別再繼續想要「由此去 ─ 領兩千元」【譯註:大富翁】了。在妳的源碼裡套用上述的訣竅,讓不支援 Javasript 的瀏覽器至少還有機會能夠使用真實鏈結。
延伸閱讀
- Jeff Howden: Links & JavaScript Living Together in Harmony.
附註
甚至別開始用那些以 Javascript 做出來的動態選單系統。他們確實讓畫面看起來很酷,不過抽煙也一樣。用真實鏈結吧。