Maison > interface Web > tutoriel HTML > 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

黄舟
Libérer: 2017-07-27 13:39:42
original
2158 Les gens l'ont consulté

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
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal