mục tiêu = khác _ trống trực tiếp so với mục tiêu = thời gian


512

Sự khác biệt giữa <a target="_new"><a target="_blank">nên sử dụng cái gì nếu tôi chỉ muốn mở một liên kết trong một tab / cửa sổ mới?


73
Tóm tắt về anwsers hiện tại: _newkhông có bất kỳ ý nghĩa đặc biệt. Bạn có thể viết _white_little_lambnhư là tốt.
Álvaro González

10
@ x3ro Làm thế nào mà nói sai " _new" không có ý nghĩa đặc biệt?
Álvaro González

3
@ ÁlvaroG.Vicario Tôi đã đề cập đến "Bạn có thể viết ... thay vào đó". Nhưng nghĩ về nó, tôi lập luận rằng "không có ý nghĩa đặc biệt" không giống như "không được khuyến khích rõ ràng", nhưng đó có thể là tôi gây khó chịu;)
fresskoma 17/214

5
Tôi muốn nhắc nhở mọi người rằng sử dụng target="_blank"mà không có rel="noopener"lỗ hổng bảo mật tiềm ẩn. Tìm kiếm rel="noopener"để tìm hiểu thêm.
Flimm

Câu trả lời:


651

Dùng chỗ trống"

Theo Thông số HTML5 :

Một tên bối cảnh duyệt hợp lệ là bất kỳ chuỗi có ít nhất một nhân vật mà không bắt đầu bằng một nhân vật U + 005F LOW LINE. (Tên bắt đầu bằng dấu gạch dưới được dành riêng cho các từ khóa đặc biệt.)

Một tên bối cảnh duyệt hợp lệ hoặc từ khóa bất kỳ chuỗi đó là hoặc là một tên bối cảnh duyệt hợp lệ hoặc đó là một ASCII case-insensitive phù hợp cho một trong số: _blank, _self, _parent, hoặc _top "-. Nguồn

Điều đó có nghĩa là không có từ khóa như _newtrong HTML5 và không có trong HTML4 (và do đó là XHTML) . Điều đó có nghĩa là, sẽ không có hành vi nhất quán nào nếu bạn sử dụng giá trị này làm giá trị cho thuộc tính đích.

Khuyến nghị bảo mật

Như Daniel và Michael đã chỉ ra trong các bình luận, khi sử dụng mục tiêu _blanktrỏ đến một trang web không đáng tin cậy, ngoài ra, bạn nên đặt rel="noopener". Điều này ngăn trang web mở gây rối với công cụ mở thông qua JavaScript. Xem bài đăng này để biết thêm thông tin.


7
Rời khỏi văn bản in đậm từ thông số kỹ thuật làm cho trích dẫn đó nghe có vẻ khó hiểu. Tôi đọc nó là "A valid browsing context namehoặc từ khóa là bất kỳ chuỗi nào là một valid browsing context namehoặc ...."
Alex Grin

6
@lyoshenka, @ x3ro: Tôi lấy tự do để thêm đoạn trước vào đoạn trích dẫn. Điều đó sẽ làm sáng tỏ sự nhầm lẫn.
Mercator

5
@aesede: Đọc thông số kỹ thuật. Chúng không hợp lệ, vì "my_custom_name" có thể không được thêm tiền tố với dấu gạch dưới. Như vậy "mới" sẽ ổn, nhưng "_new" thì không!
fresskoma

7
Bảo mật, đây là một bài đọc quan trọng mathiasbynens.github.io/rel-noopener
Daniel F

6
Vui lòng xem xét thêm rằng mọi người cũng nên thêm rel="noopener noreferrer"do lỗ hổng tấn công javascript củatarget="_blank"
Michael

126

Sử dụng target="_blank"sẽ hướng dẫn trình duyệt tạo tab hoặc cửa sổ trình duyệt mới khi người dùng nhấp vào liên kết.

Sử dụng target="_new" là không hợp lệ về mặt kỹ thuật theo các thông số kỹ thuật, nhưng theo tôi biết mọi trình duyệt sẽ hoạt động theo cùng một cách:

  • nó sẽ tìm kiếm một tab hoặc cửa sổ với tên ngữ cảnh "_new"
  • nếu tìm thấy tab / cửa sổ "_new", thì URL sẽ được tải vào đó
  • nếu không tìm thấy, một tab / cửa sổ mới sẽ được tạo với tên ngữ cảnh "_new" và URL được tải vào nó

Lưu ý target="_new"sẽ hành xử giống hệt nhưtarget="new" , và cái sau là HTML hợp lệ trong khi cái trước là HTML không hợp lệ.

Thêm một số nhầm lẫn cho điều này, trong HTML4 targetthuộc tính đã không được chấp nhận. Trong HTML5, quyết định này đã bị đảo ngược và nó là một phần chính thức của thông số kỹ thuật một lần nữa. Tất cả các trình duyệt hỗ trợ cho targetdù bạn đang sử dụng phiên bản HTML nào, nhưng một số trình xác nhận sẽ gắn cờ việc sử dụng là không dùng nữa nếu tài liệu của bạn là HTML4.


4
Vì vậy, về cơ bản, nếu tôi có hai (hoặc nhiều) liên kết với target="_new", cả hai sẽ mở trong cùng một tab, cái này sẽ ghi đè lên cái kia?
art-solopov 24/07/2015

4
@ art-solopov theo như tôi biết, vâng đó là điều sẽ xảy ra trong mọi trình duyệt. Tuy nhiên "_new" là một giá trị bất hợp pháp cho mục tiêu, vì vậy đừng làm điều đó.
Abhi Beckert

25

TL; DR
SỬ DỤNG _blank

Thuộc tính đích chỉ định nơi mở tài liệu được liên kết.

USAGE: target="xyz"  [don't forget double quotes]

_blank  Opens the linked document in a new window or tab
_self   Opens the linked document in the same frame as it was clicked (this is default)
_parent     Opens the linked document in the parent frame
_top    Opens the linked document in the full body of the window 
framename   Opens the linked document in a named frame

SINCE "_new" không phải là bất kỳ CNTT nào trong số này S COM COME THEO "framename" vì vậy nếu người dùng nhấp lại vào siêu liên kết đó, nó sẽ không mở tab mới thay vào đó cập nhật tab hiện có. Trong khi đó trong _blank nếu người dùng nhấp hai lần thì 2 tab mới sẽ mở.


21

Tôi biết đây là một câu hỏi cũ và câu trả lời đúng, sử dụng _blank, đã được đề cập nhiều lần, nhưng sử dụng <a target="somesite.com" target="_blank">Link</a> là một rủi ro bảo mật .

Đó là khuyến cáo ( lợi ích hiệu suất ) để sử dụng:

<a href="somesite.com" target="_blank" rel="noopener noreferrer">Link</a>

1
Chỉ cần một số đọc thêm về khía cạnh nguy cơ bảo mật: jitbit.com/alexblog/...
8bithero

14

Điều này có thể đã được hỏi trước nhưng:

"Mọi liên kết chỉ định đích =" _ new "sẽ tìm và tìm cửa sổ đó theo tên và mở trong đó.

Nếu bạn sử dụng target = "_ blank", một cửa sổ hoàn toàn mới sẽ được tạo mỗi lần, trên đầu cửa sổ hiện tại. "

từ đây: http://thedesignspace.net/MT2archives/000316.html


12

target="_blank" mở một tab mới trong hầu hết các trình duyệt.


12

Đó là sự hiểu biết của tôi target = whateversẽ tìm kiếm một khung / cửa sổ với tên đó. Nếu không tìm thấy, nó sẽ mở ra một cửa sổ mới với tên đó. Nếu whatever == "_new", nó sẽ xuất hiện giống như khi bạn sử dụng _blankngoại trừ .....

Sử dụng một trong các tên mục tiêu dành riêng sẽ bỏ qua giai đoạn "tìm kiếm". Vì vậy, target = "_blank"trên một tá liên kết sẽ mở ra một tá cửa sổ trống, nhưng target = whatevertrên một tá liên kết sẽ chỉ mở ra một cửa sổ.target = "_new"trên một tá liên kết có thể đưa ra hành vi bất tiện. Tôi đã không thử nó trên một số trình duyệt, nhưng chỉ nên mở một cửa sổ.

Ít nhất đây là cách tôi diễn giải các quy tắc.


9

Thận trọng - hãy nhớ luôn luôn bao gồm "trích dẫn" - ít nhất là trên Chrome, target=_blank(không có trích dẫn) KHÔNG PHẢI LÀ CÙNGtarget="_blank" (có dấu ngoặc kép).

Cái sau mở mỗi liên kết trong một tab / cửa sổ mới. Cái trước (thiếu dấu ngoặc kép) mở liên kết đầu tiên bạn nhấp vào một tab / cửa sổ mới, sau đó ghi đè lên cùng một tab / cửa sổ với mỗi liên kết tiếp theo bạn nhấp vào (tên đó cũng có dấu ngoặc kép bị thiếu).


Điểm rất tốt. Tôi gặp phải vấn đề này khi tôi không gửi _blank trong ngoặc kép. Liên kết tôi đã nhấp từ tab "trống" mới tạo của mình là viết nội dung trong tab đó thay vì mở một tab mới. Việc đóng dấu _blank trong dấu ngoặc kép buộc chrome phải mở một tab mới mỗi lần.
Steve Scherer

Ngoài ra, đảm bảo sử dụng "_blank" chứ không phải "_BLANK". Chrome thực sự khó tính về trường hợp và sẽ không mở tab mới bằng cách sử dụng "_BLANK" nhiều lần.
Steve Scherer

5
  • _blank như một giá trị mục tiêu sẽ sinh ra một cửa sổ mới mỗi lần,
  • _new sẽ chỉ sinh ra một cửa sổ mới.

Ngoài ra, mọi liên kết được nhấp với giá trị đích là _new sẽ thay thế trang được tải trong cửa sổ được sinh ra trước đó.

Bạn có thể nhấp vào đây Khi nào nên sử dụng _blank hoặc _new để tự mình dùng thử.


Bạn có thể liệt kê các trình duyệt danh dự _newnhư được mô tả?
Dima Tisnek

@qarma Hành vi đó được mô tả trong tất cả các trình duyệt mà tôi biết, _newkhông phải là một từ khóa ma thuật, nó chỉ là một cái tên, nếu một cửa sổ có tên đó tồn tại, nó sẽ sử dụng lại, nếu không nó sẽ mở nó. Nhấp vào nhiều liên kết cho cửa sổ đó sẽ chỉ mở các trang khác nhau trong cửa sổ được đặt tên, thay vì mở nhiều trang mới.
Scragar

Thông số kỹ thuật thực sự gợi ý cho các trình duyệt rằng họ ignorenhắm mục tiêu bắt đầu bằng gạch chân nhưng không phải là từ khóa. Không có đề xuất nào cho trình duyệt nên làm gì khi nó "bỏ qua" tên mục tiêu không hợp lệ. Các khả năng bao gồm: (1) coi nó như "_blank" (2) coi nó như tên cửa sổ (như thể không có dấu gạch dưới bất hợp pháp) (3) coi nó như tên cửa sổ trống rõ ràng (4) coi nó như ở đó không có thuộc tính mục tiêu. - Bất kỳ trình duyệt có thể chọn bất kỳ giải thích.
Jesse Chisholm

0

Thuộc tính đích của một liên kết buộc trình duyệt mở trang đích trong cửa sổ trình duyệt mới. Sử dụng _blanklàm giá trị đích sẽ sinh ra một cửa sổ mới mỗi lần trong khi sử dụng _newsẽ chỉ sinh ra một cửa sổ mới và mỗi liên kết được nhấp bằng giá trị đích _newsẽ thay thế trang được tải trong cửa sổ được sinh ra trước đó


0

Để mở một liên kết trong một tab / cửa sổ mới, bạn sẽ sử dụng <a target="_blank"> .

giá trị _blank = bối cảnh duyệt mục tiêu: một cái mới: tab hoặc cửa sổ tùy thuộc vào cài đặt duyệt của bạn

giá trị _new = không hợp lệ; không có giá trị như vậy trong HTML5 cho thuộc tính đích trên một phần tử

thuộc tính đích với tất cả các giá trị của nó trên một phần tử: video demo


-1

Việc sử dụng _New rất hữu ích khi làm việc trên các trang có khung. Vì target = "_ blank" không thực hiện thủ thuật và mở trang trên cùng một iframe ... nên mục tiêu mới là giải pháp tốt nhất cho Trang Iframe. Chỉ năm xu của tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.