Maison  >  Article  >  interface Web  >  Un écueil que peu de gens connaissent sur l'attribut href de la balise a en HTML

Un écueil que peu de gens connaissent sur l'attribut href de la balise a en HTML

黄舟
黄舟original
2017-07-27 13:39:422110parcourir

En raison des besoins de l'entreprise, Xiaocai s'est récemment engagé dans le développement d'applications Web. Actuellement, il n'existe que des versions iOS et Android. Bien qu'il n'existe que ces deux versions, les problèmes de compatibilité du navigateur doivent toujours être pris en compte, car les noyaux du navigateur par défaut. d'Android et d'iOS sont différents.

Parlons d’abord du problème de compatibilité. Supposons qu'il existe une telle URL :

          http://www.kpdown.com/search?name=Ben Nadel

Il y a un paramètre de nom derrière cette URL, mais la valeur du paramètre contient en fait des espaces. Il n'y a aucun problème pour accéder à un tel lien directement avec le navigateur Android, mais lors d'un accès à l'aide d'un navigateur iOS, il s'agit d'une URL erronée et une erreur sera signalée !

Nous penserons donc à l'encodage. La valeur du paramètre name peut être encodée à l'aide de la méthode encodeURIComponent(), puis épissée à l'URL. C'est sûr (encodeURIComponent est un js. méthode native, utilisez-la directement. C'est tout).

Ensuite, nous pouvons utiliser des hyperliens comme celui-ci :

           <a href="javascript:openURL(&#39;http://www.kpdown.com/search?name=Ben%20Nadel&#39;);" >查询</a>

Utilisez la méthode openURL js pour accéder à la page (en supposant qu'il existe une méthode openURL, qui n'implique aucune opération de décodage) .

Ce code s'exécute normalement sous Android, mais lorsqu'il s'agit d'iOS, il signale toujours une erreur. Il est bien codé. Pourquoi ne fonctionne-t-il toujours pas ?

Veuillez regarder le code suivant :

<a href="javascript:openURL(&#39;http://www.kpdown.com/search?name=Ben%20Nadel&#39;);">测试href</a>
<a href="javascript:;" onclick="javascript:openURL(&#39;http://www.kpdown.com/search?name=Ben%20Nadel&#39;);">测试onclick</a>

<script>
  function openURL(url){
    /*
    * 测试href --print--> http://www.kpdown.com/search?name=Ben Nadel
    * 测试onclick --print--> http://www.kpdown.com/search?name=Ben%20Nadel
    */
    console.log(url);
  }
</script>

On peut voir que : L'attribut "evil" href est utilisé lors de l'appel d'openURL est automatiquement décodé lors du passage des paramètres, tandis que l'attribut onclick garde les paramètres intacts.

Par conséquent, Xiaocai déconseille fortement d'utiliser l'attribut href de la balise a pour appeler js. La méthode onclick est très scientifique, très stable et très correcte. L'intention initiale de href est de sauter. à l'URL, alors ne l'utilisez pas pour exécuter js. En fait, une meilleure approche consiste à lier les événements, afin que le code soit plus facile à gérer et ait un aspect soigné.


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn