Je suis tombé sur ce site récemment, et je tiens à ajouter que même si les de l'utilisateur2269867 est une solution viable, mais elle peut ne pas fonctionner dans certaines situations.
Par exemple, le navigateur du système ne s'ouvrira pas seulement si l'utilisateur clique sur un lien avec l'attribut target="_blank", mais aussi si la fonction window.open() est appelée en javascript. En outre, même la suppression de tous les attributs "target" ne fonctionnera pas si une page charge du contenu dynamiquement et modifie le DOM après que votre script a déjà fini de s'exécuter.
Pour résoudre tous les problèmes ci-dessus, vous devez surcharger la fonction window.open et vérifier l'attribut 'target' non pas une fois, mais à chaque fois que l'utilisateur clique sur quelque chose. Voici un script qui couvre ces cas :
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);
Mes compétences en js ne sont pas idéales, alors n'hésitez pas à les modifier. N'oubliez pas non plus que, comme kiewic mentionnée Pour Windows 10, il existe l'événement WebView.NewWindowRequested qui résout ce problème de manière plus naturelle.