Một liên kết phải có một mục tiêu HREF được chỉ định để cho phép nó trở thành một đối tượng hiển thị có thể sử dụng được.
Hầu hết các trình duyệt sẽ không phân tích JavaScript nâng cao trong một
<A HREF=""
thẻ như:
<A href="JavaScript:var elem = document.getElementById('foo');"
bởi vì thẻ HREF trong hầu hết các trình duyệt không cho phép khoảng trắng hoặc sẽ chuyển đổi khoảng trắng thành% 20, tương đương HEX của SPACE, làm cho JavaScript của bạn hoàn toàn vô dụng với trình thông dịch.
Vì vậy, nếu bạn muốn sử dụng thẻ A HREF để thực thi JavaScript nội tuyến, bạn phải chỉ định giá trị hợp lệ cho HREF FIRST không quá phức tạp (không chứa khoảng trắng), sau đó cung cấp JavaScript trong thẻ thuộc tính sự kiện như OnClick , OnMouseOver, OnMouseOut, v.v.
Câu trả lời điển hình là làm một cái gì đó như thế này:
<A HREF="#" onclick="var elem = document.getElementById('foo');">Get the object</a>
Điều này hoạt động tốt nhưng nó làm cho trang nhảy lên trên cùng vì dấu thăng / thẻ băm bảo nó làm như vậy.
Chỉ cần cung cấp một dấu thăng / thẻ băm trong thẻ A HREF thực sự chỉ định neo gốc, theo mặc định, luôn luôn là đầu trang, bạn có thể chỉ định một vị trí khác bằng cách chỉ định thuộc tính NAME bên trong thẻ HREF.
<A NAME='middleofpage'></A>
Sau đó, bạn có thể thay đổi thẻ A HREF của mình để chuyển sang 'middleofpage' và thực thi JavaScript trong sự kiện OnClick, một khi điều đó xảy ra như vậy:
<A HREF="#middleofpage" onclick="var elem = document.getElementById('foo');">Get the object</a>
Sẽ có NHIỀU lần bạn không muốn liên kết đó nhảy xung quanh, vì vậy bạn có thể thực hiện hai điều:
<A HREF="#thislinkname" name='thislinkname' onclick="var elem = document.getElementById('foo');">Get the object</a>
Bây giờ nó sẽ không đi đến đâu khi được nhấp, nhưng nó có thể khiến trang tự định tâm lại từ chế độ xem hiện tại của nó. Điều này không đẹp. Cách tốt nhất để cung cấp javascript nội tuyến, sử dụng A HREF, nhưng không phải thực hiện bất kỳ điều nào ở trên là gì? JavaScript: void (0);
<A HREF="JavaScript:void(0);" onclick="var elem = document.getElementById('foo');">Get the object</a>
Điều này báo cho trình duyệt đi NGAY BÂY GIỜ, nhưng thay vào đó thực thi JavaScript hợp lệ: void (0); đầu tiên hoạt động trong thẻ HREF vì nó không chứa khoảng trắng và sẽ không được phân tích cú pháp dưới dạng URL. Nó thay vào đó sẽ được chạy bởi trình biên dịch. VOID là một từ khóa, khi được cung cấp với tham số 0 trả về UNDEFINED, không sử dụng thêm bất kỳ tài nguyên nào để xử lý giá trị trả về sẽ xảy ra mà không chỉ định 0 (nó thân thiện với quản lý bộ nhớ / hiệu năng hơn).
Điều tiếp theo xảy ra là OnClick được thực thi. Trang không di chuyển, không có gì xảy ra hiển thị.
javascript:
là một trong nhiều lược đồ URI: en.wikipedia.org/wiki/URI_scheme , như thế nàodata:
.