2010-12-09 7 views
5

Quelle est la meilleure alternative à target="_blank"?alternative à target = "_ blank"

Voici la déclaration DOCTYPE html et nous utilisons:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
+1

Il suffit d'utiliser HTML5 doctype. – BalusC

+1

Quel est le problème avec target = "_ blank"? –

+2

Voici une alternative: Ne pas ouvrir les liens dans les nouvelles fenêtres. – RoToRa

Répondre

-1

Utilisez JS pour rendre la page ouverte dans une nouvelle fenêtre.

<a href="test.html" onclick="return ! window.open(this.href);">New Window Open</a> 
+5

onclicks sont mauvais! – Kumar

+0

Vous allez gagner des maux de tête en sélectionnant cela comme solution –

+0

@Kumar pourquoi les onclicks sont considérés comme mal? – piperchester

3

C'est juste valide selon XHTML Transitional. Vous pouvez continuer à les utiliser. C'est seulement invalide selon XHTML Strict. Néanmoins, dans ce cas, vous pouvez contourner ce problème avec un peu d'aide de JavaScript. Remplacer tous target="_blank" par rel="ext" (ce qui est le standard de facto pour les liens externes) et exécutez le script suivant (jQuery) à la page charge:

$(document).ready(function() { 
    $('a[rel=ext]').attr('target', '_blank'); 
}); 
+0

Une solution de contournement pour quoi? – RoToRa

+0

@RoToRa: Pour un validateur w3 aboyant (mais pas mordant) lors de l'utilisation de l'attribut target sur XHTML Strict. – BalusC

+0

Il n'utilise pas strict :-) – RoToRa

0

similaires à la réponse donnée par BalusC mais sans qu'il soit nécessaire de modifier le code HTML:

http://jsfiddle.net/vC39V/4/

(function() { 
    "use strict"; 
    $(document).ready(function() { 
     var LinkTest = {}; 
     // External Links 
     LinkTest.externalLinks = function() { 
      $('a[href^=http]').click(function() { 
       window.open(this.href); 
       return false; 
      }); 
     }(); 

    }); 
})(jQuery);