Je sais que c'est un fait et tri, mais voici ce que j'utilise pour résoudre le problème dans mon application.
if (!e.target.hasAttribute("target")) {
e.preventDefault();
e.target.setAttribute("target", "_blank");
e.target.click();
return;
}
Fondamentalement ce qui se passe ici c'est que je exécuter une vérification si le lien a target=_blank
d'attribut. Si ça ne marche pas, il arrête le lien de déclenchement, il établit pour ouvrir dans une nouvelle fenêtre, puis par programmation clique sur elle.
Vous pouvez aller plus loin et de passer l'arrêt de l'original de la souris (et de rendre votre code d'un ensemble beaucoup plus compact) en essayant ce:
if (!e.target.hasAttribute("target")) {
e.target.setAttribute("target", "_blank");
}
Si vous utilisez jQuery de faire abstraction de la mise en œuvre de l'ajout d'un attribut de la croix-navigateur, vous devez utiliser ce lieu de e.target.setAttribute("target", "_blank")
:
jQuery(event.target).attr("target", "_blank")
Vous pouvez avoir besoin de retravailler pour l'adapter à votre cas d'utilisation, mais voici comment je l'ai rayé de ma propre démangeaisons.
Voici une démo de en action pour vous de jouer avec.
(Le lien dans jsfiddle revient à cette discussion .. pas besoin d'un nouvel onglet :))