Câu trả lời:
<a onclick="jsfunction()" href="#">
hoặc là
<a onclick="jsfunction()" href="javascript:void(0);">
Biên tập:
Phản hồi trên thực sự không phải là một giải pháp tốt, vì đã học được rất nhiều về JS kể từ khi tôi đăng lần đầu. Xem câu trả lời của EndangeredMassa dưới đây để biết cách tiếp cận tốt hơn để giải quyết vấn đề này.
JavaScript không phô trương, không phụ thuộc vào thư viện:
<html>
<head>
<script type="text/javascript">
// Wait for the page to load first
window.onload = function() {
//Get a reference to the link on the page
// with an id of "mylink"
var a = document.getElementById("mylink");
//Set code to run when the link is clicked
// by assigning a function to "onclick"
a.onclick = function() {
// Your code here...
//If you don't want the link to actually
// redirect the browser to another page,
// "google.com" in our example here, then
// return false at the end of this block.
// Note that this also prevents event bubbling,
// which is probably what we want here, but won't
// always be the case.
return false;
}
}
</script>
</head>
<body>
<a id="mylink" href="http://www.google.com">linky</a>
</body>
</html>
hrefnếu tôi không muốn chuyển hướng người dùng và chỉ muốn chạy một số mã? Chỉnh sửa: Tôi thấy rằng nó có thể để trống : href="".
onclicksự kiện thông qua window.onload, thay vì đặt onclicktrực tiếp vào <a>thẻ?
<a href="javascript:alert('Hello!');">Clicky</a>
EDIT, năm sau: KHÔNG! Đừng bao giờ làm điều này! Tôi còn trẻ và ngu ngốc!
Chỉnh sửa, một lần nữa: Một vài người đã hỏi tại sao bạn không nên làm điều này. Có một vài lý do:
Trình bày: HTML nên tập trung vào thuyết trình. Đưa JS vào HREF có nghĩa là HTML của bạn hiện đang hoạt động với logic kinh doanh.
Bảo mật: Javascript trong HTML của bạn như thế vi phạm Chính sách bảo mật nội dung (CSP) . Chính sách bảo mật nội dung (CSP) là một lớp bảo mật bổ sung giúp phát hiện và giảm thiểu một số loại tấn công nhất định, bao gồm cả kịch bản chéo trang web (XSS) và tấn công tiêm dữ liệu. Các cuộc tấn công này được sử dụng cho tất cả mọi thứ, từ đánh cắp dữ liệu đến phá hoại trang web hoặc phân phối phần mềm độc hại. Đọc thêm ở đây .
Khả năng truy cập: Thẻ neo là để liên kết đến các tài liệu / trang / tài nguyên khác. Nếu liên kết của bạn không đi bất cứ nơi nào, nó sẽ là một nút . Điều này giúp cho trình đọc màn hình, thiết bị đầu cuối chữ nổi, vv dễ dàng hơn để xác định những gì đang xảy ra và cung cấp cho người dùng khiếm thị thông tin hữu ích.
href='#'và alert()trong onclick?
Và, tại sao không phô trương với jQuery:
$(function() {
$("#unobtrusive").click(function(e) {
e.preventDefault(); // if desired...
// other methods to call...
});
});
HTML
<a id="unobtrusive" href="http://jquery.com">jquery</a>
Javascript không phô trương có nhiều ưu điểm, đây là các bước cần thực hiện và tại sao nó tốt để sử dụng.
liên kết tải như bình thường:
<a id="DaLink" href="http://host/toAnewPage.html"> bấm vào đây </a>
Điều này rất quan trọng vì nó sẽ hoạt động đối với các trình duyệt không bật javascript hoặc nếu có lỗi trong mã javascript không hoạt động.
javascript chạy khi tải trang:
window.onload = function(){
document.getElementById("DaLink").onclick = function(){
if(funcitonToCall()){
// most important step in this whole process
return false;
}
}
}nếu javascript chạy thành công, có thể tải nội dung trong trang hiện tại bằng javascript, trả về false sẽ hủy liên kết bắn. nói cách khác, đặt return false có tác dụng vô hiệu hóa liên kết nếu javascript chạy thành công. Trong khi cho phép nó chạy nếu javascript không, tạo một bản sao lưu đẹp để nội dung của bạn được hiển thị theo cách nào đó, cho các công cụ tìm kiếm và nếu mã của bạn bị hỏng hoặc được xem trên hệ thống không phải là javascript.
cuốn sách hay nhất về chủ đề này là "Dom Scription" của Jeremy Keith
Hoặc, nếu bạn đang sử dụng PrototypeJS
<script type="text/javascript>
Event.observe( $('thelink'), 'click', function(event) {
//do stuff
Event.stop(event);
}
</script>
<a href="#" id="thelink">This is the link</a>
dựa trên @mister_lucky sử dụng câu trả lời với jquery:
$('#unobtrusive').on('click',function (e) {
e.preventDefault(); //optional
//some code
});
Mã HTML:
<a id="unobtrusive" href="http://jquery.com">jquery</a>
chỉ cần sử dụng javascript: ---- mẫu mực
javascript:var JFL_81371678974472 = new JotformFeedback({ formId: '81371678974472', base: 'https://form.jotform.me/', windowTitle: 'Photobook Series', background: '#e44c2a', fontColor: '#FFFFFF', type: 'false', height: 700, width: 500, openOnLoad: true })