bạn có thể hủy kích hoạt tất cả các liên kết trong một trang có lớp kiểu này:
a {
pointer-events:none;
}
bây giờ tất nhiên thủ thuật là chỉ hủy kích hoạt các liên kết khi bạn cần, đây là cách thực hiện:
sử dụng một lớp A trống, như thế này:
a {}
thì khi bạn muốn hủy kích hoạt các liên kết, hãy làm như sau:
GetStyleClass('a').pointerEvents = "none"
function GetStyleClass(className)
{
for (var i=0; i< document.styleSheets.length; i++) {
var styleSheet = document.styleSheets[i]
var rules = styleSheet.cssRules || styleSheet.rules
for (var j=0; j<rules.length; j++) {
var rule = rules[j]
if (rule.selectorText === className) {
return(rule.style)
}
}
}
return 0
}
LƯU Ý: Tên quy tắc CSS được chuyển đổi thành chữ thường trong một số trình duyệt và mã này phân biệt chữ hoa chữ thường, vì vậy tốt hơn hãy sử dụng tên lớp viết thường cho điều này
để kích hoạt lại các liên kết:
GetStyleClass('a').pointerEvents = ""
kiểm tra trang này http://caniuse.com/pointer-events để biết thông tin về khả năng tương thích của trình duyệt
Tôi nghĩ đây là cách tốt nhất để làm điều đó, nhưng thật đáng buồn là IE, như mọi khi, sẽ không cho phép nó :) Dù sao thì tôi vẫn đăng bài này, vì tôi nghĩ nó chứa thông tin có thể hữu ích và bởi vì một số dự án sử dụng một trình duyệt biết , như khi bạn đang sử dụng chế độ xem web trên thiết bị di động.
Nếu bạn chỉ muốn hủy kích hoạt MỘT liên kết (tôi chỉ nhận ra đó là câu hỏi), tôi sẽ sử dụng một chức năng thủ công đặt url của trang hiện tại, hoặc không, dựa trên điều kiện đó. (như giải pháp bạn đã chấp nhận)
câu hỏi này dễ hơn tôi nghĩ rất nhiều :)