Tình cờ gặp vấn đề này gần đây và tôi muốn thêm rằng mặc dù câu trả lời là user2269867's có thể không hoạt động trong một số trường hợp nhất định.
Ví dụ: trình duyệt hệ thống sẽ không chỉ mở nếu người dùng nhấp vào liên kết có thuộc tính target = "_ blank", mà còn nếu hàm window.open() được gọi trong javascript. Hơn nữa, ngay cả việc loại bỏ tất cả các thuộc tính 'đích' sẽ không hoạt động nếu một trang tải một số nội dung động và thay đổi DOM sau khi tập lệnh của bạn đã được thực thi xong.
Để giải quyết tất cả các vấn đề ở trên, bạn cần phải ghi đè chức năng window.open và cũng kiểm tra thuộc tính 'target' không một lần, nhưng mỗi khi người dùng nhấp vào một cái gì đó. Đây là tập lệnh bao gồm các trường hợp đó:
function selfOrParentHasAttribute(e, attributeName) {
var el = e.srcElement || e.target;
if (el.hasAttribute(attributeName)) {
return el;
}
else {
while (el = el.parentNode) {
if (el.hasAttribute(attributeName)) {
return el;
}
}
}
return false;
}
var targetAttributeName = "target";
document.addEventListener("click", function (e) {
var el = selfOrParentHasAttribute(e, targetAttributeName);
if (el) {
if ((el.getAttribute(targetAttributeName) == "_blank") ||
(el.getAttribute(targetAttributeName) == "_new"))
{
el.removeAttribute(targetAttributeName);
}
}
});
window.open = function() {
return function (url) {
window.location.href = url;
};
}(window.open);
Kỹ năng js của tôi không lý tưởng, vì vậy vui lòng sửa đổi. Cũng đừng quên rằng, như kiewic mentioned, đối với Windows 10 có sự kiện WebView.NewWindowRequested giải quyết vấn đề này tự nhiên hơn.
Nguồn
2016-09-06 15:48:24
Hoạt động như một sự quyến rũ! Cảm ơn! –
Xin chào! Great buddy! cảm ơn nó đã hoạt động. chỉ cần thêm chờ đợi keywork trước khi webView và làm cho sự kiện async, nó làm việc hoàn hảo. –