第十三天:使用真實鏈結

網頁設計的苦難根源乃是「 javascript: 」鏈結;這個假鏈結會在妳按下的時候執行一段 Javascript 程式碼。這個問題最常發生於,網誌用這種鏈結來在另一個視窗裡顯示迴響。為什麼這會是個問題呢?因為有 11% 的網際網路使用者因為某些原因而不使用 Javascript ;這同時也包括許多殘障的朋友,因為她們所能夠使用的瀏覽器就是不支援。這種假鏈結對她們來說不能用,妳應當改用真實的鏈結。

雖然這個問題很容易描述及修改,但是無論我多麼強調這個訣竅的重要性也都不為過。多數問題,像是不提供跳過導覽列的「跳過鏈結」都祇不過會在某種程度上減低可用性罷了,至少妳的頁面還能夠被讀取。但是現在我們所遇到的這個問題,卻會讓重要的內容幾乎完全無法被取得。如果妳的迴響被藏在某個「 javascript: 」鏈結之後,就幾乎不存在了

誰因此獲益?

  1. Marcus 從中獲益了。因為 Lynx 並不支援 Javascript 。
  2. Michael 從中獲益了。因為 Links 並不支援 Javascript 。
  3. Lillian 從中獲益了。雖然她用的是 Internet Explorer ,但是資訊部門祇允許某些獲准的站台使用 Javascript ,而把其他站台的 Javascript 給擋掉了;很不幸地,妳的站台並不在這些獲准的站台中。
  4. 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 的瀏覽器至少還有機會能夠使用真實鏈結。

延伸閱讀

附註

甚至別開始用那些以 Javascript 做出來的動態選單系統。他們確實讓畫面看起來很酷,不過抽煙也一樣。用真實鏈結吧。