Bạn có thể sử dụng target = xông _ trống trong HTML5 không?


165

Tôi nhớ rằng đã đọc ở đâu đó rằng trong HTML5, nó không còn ổn để sử dụng target="_blank"trong HTML5, nhưng tôi không thể tìm thấy nó ngay bây giờ.

Có thể tiếp tục sử dụng target="_blank"?

Tôi biết nó thường được coi là một ý tưởng tồi, nhưng đó là cách dễ nhất để mở một cửa sổ mới cho một cái gì đó như PDF và nó cũng không yêu cầu bạn phải dựa vào JavaScript.


5
Nói chung, nếu bạn muốn mở một trang web bên ngoài từ trang web của mình, thì việc mở một cửa sổ mới (có lẽ là một tab mới trên hầu hết các trình duyệt hiện nay) là một ý tưởng tốt hơn theo quan điểm của tôi.
hobbes3

7
@ hobbes3, xin vui lòng ngừng điều hướng và lịch sử của tôi. Tôi là người đang duyệt và tôi là người quyết định xem một liên kết sẽ mở trong một tab mới (nhấp chuột giữa) hoặc trong cùng một tab (nhấp chuột trái). Khi tôi bắt gặp một trang web buộc tôi phải tuân theo "thực tiễn tốt nhất đúng đắn" của nó, mở mọi liên kết trong các tab mới, tôi sẽ nhanh chóng rời đi.
Albireo

9
@Albireo, đó chỉ là ý kiến ​​của tôi và một số dịch vụ web phổ biến cũng kết hợp cùng một ý tưởng. Ví dụ: nhấp vào liên kết trong thư của bạn trong Gmail sẽ mở một cửa sổ mới theo mặc định.
hobbes3

12
@Albireo bạn cho rằng người dùng luôn tiên tiến và am hiểu công nghệ như bạn.
Mike Campbell

3
Có một lý do tại sao targetet al. hiện hữu. Đôi khi chúng là một điều cần thiết. Ví dụ, một trang được tạo động với JS trạng thái, trong đó iframe ít mong muốn hơn so với tab mới (ví dụ: xem PDF, như trạng thái OP). Hoặc khi một trang web an toàn (như ngân hàng) gửi bạn đến một liên kết bên ngoài nhưng không cho phép sử dụng nút quay lại do hết hạn nội dung. Giống như tất cả mọi thứ, thuộc tính HTML này không phải là một "ý tưởng tồi" để sử dụng, nhưng nó nên được sử dụng với suy nghĩ và sự quan tâm, như với mọi thư viện, lớp, chức năng và thuộc tính trong tất cả các chương trình.
s.co.tt

Câu trả lời:


159

Có vẻ như target="_blank"vẫn ổn. Nó được liệt kê như một từ khóa ngữ cảnh duyệt trong dự thảo HTML5 mới nhất .


54
target="_blank"sẽ khiến một cửa sổ mới mở ra mỗi khi người dùng nhấp vào liên kết. Trừ khi đây thực sự là những gì bạn muốn xảy ra (và hiếm khi) xem xét việc sử dụng target="somethingUnique"để người dùng chỉ được mở một cửa sổ, ngay cả khi họ nhấp vào liên kết nhiều lần. Nó làm cho một UX đẹp hơn nhiều.
BanksySan

4
@BanksySan: Một ví dụ mà tôi nghĩ target="_blank"là tốt là các nút chia sẻ.
Martin Thoma

Nếu tôi đang đọc một bài viết dài và có một tài liệu tham khảo đến một số thông tin liên quan trên một trang web khác (hoặc cùng một trang web). Tôi thường muốn nhảy qua lại giữa hai người mà không mất vị trí của mình trong bài viết gốc. target = "_ blank" là hoàn hảo cho việc này. Rời khỏi trang và phải tải lại luân phiên từng trang (thường mất vị trí của tôi trong một trong hai trang), thì không. Có, tôi biết rằng tôi có thể nhấp chuột phải vào liên kết và mở nó trong một tab mới, nhưng tôi không muốn vì nó sẽ phá vỡ sự tập trung của tôi và tôi nghi ngờ rằng phần lớn người dùng web không biết làm thế nào.
Bob Ray

Thuộc tính đích có nhiều lợi ích. Tôi sẽ không disq đó. Các nhà quảng cáo cửa sổ bật lên đã phá hủy mục đích của nó, nhưng ngày nay với rất nhiều dịch vụ bỏ qua trải nghiệm duyệt web, nhiều người không muốn rời khỏi bài viết hoặc tab hiện tại, nhưng vẫn tương tác với PDF hoặc video tải xuống nặng. Sử dụng _blank sẽ đảm bảo rằng bạn cho phép người dùng điền vào một tab trống - không ghi đè lên nội dung dân cư hiện tại, nếu bạn phục vụ nhiều liên kết trên cùng một phiên / trang web. Những cái tên độc đáo chỉ lộn xộn trong một danh sách âm thanh với 90 bài hát .... Viva la target, viva la _blank ...
Jonas Lundman

91

Nó là ok để sử dụng target="_blank"; Điều này đã được loại bỏ trong XHTML vì việc nhắm mục tiêu các cửa sổ mới sẽ luôn đưa ra cảnh báo bật lên trong hầu hết các trình duyệt. XHTML sẽ luôn hiển thị lỗi với thuộc tính đích trong xác thực.

HTML 5 đã mang nó trở lại bởi vì chúng tôi vẫn sử dụng nó. Đó là bạn của chúng tôi và chúng tôi không thể buông tay.

Không bao giờ buông tay.


Những gì bạn yêu cầu chỉ hợp lệ cho HTML nghiêm ngặt.
qwertzman

Đối với XHTML cũng như cho HTML.
MEMark

15

Mặc dù target="_blank"thể chấp nhận được trong HTML5 , nhưng cá nhân tôi cố gắng không bao giờ sử dụng nó (ngay cả để mở tệp PDF trong một cửa sổ mới).

HTML nên xác định ý nghĩa và nội dung . Hãy tự hỏi mình, “sẽ có nghĩa là các athay đổi yếu tố nếu targetthuộc tính đã được gỡ bỏ?” Nếu không, mã không nên đi trong HTML. (Thật ra tôi rất ngạc nhiên khi W3C giữ nó, tôi đoán họ thực sự không thể buông tay.)

Hành vi trình duyệt , cụ thể là hành vi tương tác với người dùng , nên được thực hiện bằng các ngôn ngữ kịch bản phía máy khách như JavaScript. Vì bạn muốn trình duyệt hoạt động theo một cách cụ thể, tức là, mở một cửa sổ mới, bạn nên sử dụng JS. Nhưng như bạn đã đề cập, hành vi này đòi hỏi trình duyệt phải dựa vào JS. (Mặc dù nếu trang web của bạn xuống cấp một cách duyên dáng, hoặc tăng cường dần dần hoặc bất cứ điều gì , thì nó vẫn sẽ ổn. Người dùng bị vô hiệu hóa JS sẽ không bỏ lỡ nhiều.)

Điều đó đang được nói, cả hai không phải là câu trả lời đúng. Ở đâu đó có ý kiến ​​cho rằng cuối cùng người dùng cuối sẽ quyết định như thế nào . Lấy ví dụ này.

Bạn đang lướt Wikipedia, ngày càng sâu hơn vào một cái hố thỏ. Bạn đi qua một liên kết trong bài đọc của bạn.

Giả sử bạn muốn lướt qua trang được liên kết thật nhanh trước khi quay lại. Bạn có thể mở nó trong một tab mới và sau đó đóng nó khi bạn hoàn thành (vì nhấn nút 'quay lại' và chờ tải lại trang mất quá nhiều thời gian). Hoặc, nếu nó trông thú vị và bạn muốn lưu nó sau này thì sao? Có lẽ bạn nên mở nó trong một tab nền mới và tiếp tục đọc trang hiện tại. Hoặc, có thể bạn quyết định bạn đã đọc xong trang này, vì vậy bạn sẽ chỉ theo liên kết trong tab hiện tại.

Vấn đề là, bạn có quy trình làm việc của riêng mình và bạn muốn trình duyệt của mình hoạt động tương ứng. Bạn có thể trở nên khá thất vọng nếu nó đưa ra các loại quyết định cho bạn.

Điều đó đang được nói, các nhà phát triển web nên làm rõ hoàn toàn các liên kết của họ đi đâu, loại và / hoặc định dạng của nguồn mà họ tham chiếu và những gì họ làm. Chú giải công cụ có thể là bạn của bạn (trừ khi bạn đang sử dụng máy tính bảng hoặc điện thoại; trong trường hợp đó, hãy chỉ định những mục này trên trang web dành cho thiết bị di động). Tất cả chúng ta đều biết rằng nó sẽ hấp dẫn đến mức nào khi được mang đi đâu đó mà chúng ta không mong đợi hoặc làm cho điều gì đó xảy ra mà chúng ta không có ý định.


Và nếu bất cứ ai đủ thông minh để thiết kế một tiện ích người dùng cho phép một người rất dễ dàng thực hiện quyền kiểm soát do Thượng đế ban hành với mọi liên kết (một cách dễ dàng, như trong tiềm thức), thì nó nên được thêm vào trình duyệt và tất cả các thẻ <a> có thể cung cấp nó.
Đánh dấu Goldfain

Câu trả lời này là hợp lý và kiến ​​trúc là chính xác nhất, theo ý kiến ​​của tôi. Trong một thế giới lý tưởng, các tác giả nên quan tâm nhiều hơn đến việc xác định ngữ nghĩa đúng đắn của các khối, và ít hơn về việc xác định trước hành vi của các khối. Trong vũ trụ nội dung thích ứng mới nổi, các hành vi của cửa sổ có thể phụ thuộc vào chủ đề đáp ứng hoặc sở thích của người dùng có hiệu lực tại thời điểm yêu cầu; "điều" ngữ nghĩa đi chỉ được sửa đổi khi cần thiết bằng cách chuyển đổi (DOM hoặc regex, máy chủ hoặc trình duyệt). Theo cách này, các hành vi của cửa sổ CÓ THỂ tùy thuộc vào người dùng thay vì tác giả trong CMS.
Ngày Don

12

Đó là cách dễ nhất để mở một cửa sổ mới cho một cái gì đó như PDF

Đây cũng là cách dễ nhất để làm phiền người dùng không phải Windows. PDF chỉ mở tốt trong các trình duyệt trên các nền tảng khác. Mở một cửa sổ mới cũng làm rối tung lịch sử điều hướng và làm phức tạp vấn đề trên các nền tảng nhỏ hơn như điện thoại thông minh.

KHÔNG mở các cửa sổ mới cho những thứ như PDF chỉ vì các phiên bản Windows cũ hơn đã bị hỏng.


11
Biết những gì giúp khi bạn nói với mọi người không sử dụng một cái gì đó? Hiển thị cho họ những gì sẽ sử dụng, thuộc tính tải xuống HTML5: <a download="[file name hereTHER" href="file.ext"> vv </a> .
Giăng

5

Hầu hết các nhà phát triển web target="_blank"chỉ sử dụng để mở các liên kết trong tab mới. Nếu bạn target="_blank"chỉ sử dụng để mở các liên kết trong một tab mới, thì nó dễ bị tấn công. Khi bạn mở một liên kết trong tab mới ( target="_blank"), trang mở trong tab mới có thể truy cập tab ban đầu và thay đổi vị trí của nó bằng thuộc window.openertính.

Mã Javascript:

window.opener.location.replace(malicious URL)

Phòng ngừa:

rel="nofollow noopener noreferrer"

Tôi không chắc nofollow có liên quan đến bảo mật - nó dành cho bot công cụ tìm kiếm.
Darryl Hein

4

Mặc dù mục tiêu vẫn được chấp nhận trong HTML5 nhưng nó không được ưa thích. Để liên kết đến tệp PDF, hãy sử dụng thuộc tính tải xuống thay vì thuộc tính đích.

Đây là một ví dụ:

<a href="files/invoice.pdf" download>Invoice</a>

Nếu tên tệp gốc được mã hóa để lưu trữ tệp duy nhất, bạn có thể chỉ định tên tải xuống thân thiện với người dùng bằng cách gán giá trị cho thuộc tính tải xuống:

<a href="files/j24oHPqJiUR2ftK0oeNH.pdf" download="invoice.pdf">Invoice</a>

Hãy nhớ rằng trong khi hầu hết các trình duyệt hiện đại hỗ trợ tính năng này, một số trình duyệt có thể không. Xem caniuse.com để biết thêm.



0

Bạn có thể làm theo cách sau với jquery, điều này sẽ mở nó trong một cửa sổ mới:

<input type="button" id="idboton" value="google" name="boton" /> 

<script type="text/javascript">
    $('#idboton').click(function(){
        window.open('https://www.google.com.co');
    });

</script>

Tại sao không thêm một biểu mẫu xung quanh nút với target = "_ blank". Có vẻ như điều đó sẽ dễ dàng hơn và loại bỏ sự cần thiết của JS.
Darryl Hein

-1

Tôi nghĩ rằng thuộc tính đích không được dùng cho <link>phần tử, không <a>, đó có thể là lý do tại sao bạn nghe nói nó không được sử dụng nữa.

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.