2009-09-04 82 views
1

我很好奇這應該如何正確完成。html無效(href目標標記)

我跑了網頁IM通過W3 HTML validateor工作,我得到了一個錯誤信息

47行,列54:屬性「目標」的存在,但不能用於這個元素**

<ul><li><a href="./jobops/1000 Design PM.pdf" target="blank">1000 Design PM</a></li> 

您已在文檔中使用上述屬性,但您使用的文檔類型不支持該元素的該屬性。此錯誤通常是由於「嚴格」文檔類型與使用框架的文檔(例如,您必須使用「過渡」文檔類型以獲取「目標」屬性)不正確地使用或通過使用供應商專有的擴展名(例如「 marginheight「(這通常是通過使用CSS來達到預期的效果)。

任何想法如何我可以有一個鏈接打開一個新的窗口,但不使用目標標籤?

回答

4

您可以使用JavaScript to open new windows,它可以避免目標在現代HTML中無效的問題。

但是,這繞過了各種系統來警告他們有關新窗口(或防止他們打開),所以你最好使用目標屬性(並切換到允許它的Doctype)。

更好的是留給用戶決定他們何時想要一個新窗口。除了煩惱因素之外,他們還引入了accessibility problems

+1

+1「最好還是留給用戶來決定他們什麼時候想要一個新窗口」 – Mayo 2009-09-04 14:52:40

1

難道不應該是...

target="_blank" 

無論...你可以打開使用JavaScript一個新的窗口,但是,打破簡單的瀏覽之美。如果我使用Lynx或其他瀏覽器進行瀏覽會怎麼樣?

+3

這是應該的,但是,這並不解決問題 – Quentin 2009-09-04 14:35:09

+1

window.open是一個函數。你用參數調用它,你不會爲它指定URL。 – Quentin 2009-09-04 14:49:39

+1

請勿濫用'rel'。只需將這些鏈接放在名爲'_blank'的類中即可。 – Gumbo 2009-09-04 14:53:10

0

使用:

target="_blank" 

休息嚴格的XHTML驗證方法。 Here's文件,詳細闡述一種解決方法:

0

而是目標=「_空白」(誰不會驗證),你可以使用JavaScript這樣的:

<a onclick='window.open("./jobops/1000 Design PM.pdf", "_blank");return false;' href="./jobops/1000 Design PM.pdf">1000 Design PM</a> 

然後鏈接將在新窗口中打開,你的頁面將被驗證。

未啓用Javascript的用戶(即使該用戶僅佔所有用戶的2%)仍然能夠使用此方法跟蹤鏈接。這傢伙的都在評論:)

有一個愉快的週末,大家好點...

+0

雖然這是一種安全的方法 - 我知道有些人在沒有啓用Javascript的情況下運行(通常並不常見)。或者這隻適用於定義的腳本? – 2009-09-04 14:45:08

+0

有很多方法可以用window.open來實現,這是最糟糕的。如果JavaScript不可用,它會鏈接到頁面的頂部。對於這個問題,由於事件處理程序沒有返回值,它總是會鏈接到頁面的頂部(即使打開了新窗口)。 – Quentin 2009-09-04 14:45:57

+1

真的應該是'1000 Design PM',以允許禁用javascript的用戶下載/打開pdf。 – voyager 2009-09-04 14:46:52

1

target attribute不是HTML4和XHTML 1.0的嚴格變體的一部分,以及XHTML 1.1。

所以你需要使用JavaScript來使用一種變通方法:

<a href="./jobops/1000 Design PM.pdf" class="_blank">1000 Design PM</a> 

var aElems = document.getElementsByTagName("a"); 
for (var i=0, n=aElems.length; i<n; ++i) { 
    if (/(?:^|\s+)_blank(?:\s+|$)/.test(aElems[i].className)) { 
     aElems[i].onclick = function() { 
      return !window.open(this.href, "_blank"); 
     } 
    } 
} 

或(在未來)CSS 3(見Hyperlink Presentation Module):

a._blank { 
    target: new; 
} 
+0

目標不是HTML 5的一部分嗎? http://www.w3.org/TR/html5/history。html#attr-hyperlink-target – Quentin 2009-09-04 15:00:49

+0

@David Dorward:修正了它;) – Gumbo 2009-09-04 15:02:48

+0

對於除驗證器以外的任何事情,這都不是真正的解決方法。你仍然只是在追求一個屬性,而不是你聲稱文檔分開的規範,並希望瀏覽器實現了這個外部目標行爲。相反,您需要在點擊時添加一個事件來打開window.open中的鏈接。有關更多信息,請參閱http://www.badlydrawntoy.com/2009/03/03/replacing-target_blank-for-strict-xhtml-using-jquery-redux/。 – 2010-05-06 16:49:21

3
target="_blank" 

不會驗證嚴格,因爲'target'屬性已被棄用。

相反,嘗試類似於前述的onclick解決方法,但您不需要那裏的「_blank」。簡單地說:

<a href="./jobops/1000 Design PM.pdf" onclick="window.open(this.href); return false;">1000 Design PM</a> 

會工作。 「目標」被棄用的原因是因爲HTML用於語義標記數據,而目標屬性是提供行爲,這是javascript的用途。

如果用戶關閉了JavaScript,則URL將在同一個窗口中打開。

+1

目標不被棄用,它只是不會出現在嚴格的變體。 – Quentin 2009-09-04 15:14:33

+0

Onclick也會拋出違規 – Crash893 2009-09-04 15:26:58

+0

違規是什麼? – Evernoob 2009-09-04 15:34:22

1

根據W3C,似乎「目標」屬性未棄用在HTML 5任何更多:

爲一個和麪單元的目標屬性不再 反對,因爲它是在有用Web應用程序,例如與iframe結合使用 。

http://www.w3.org/TR/html5-diff/