script src et contenu

Le
Bol
Salut

Avec son bouton +1 Google apporte une ecriture
dont je n'arrive pas à trouver de reference.

http://code.google.com/intl/fr/apis/+1button/

<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
{"parsetags": "explicit"}
</script>

Appel de code externe et un passage de parametre

le Darft HTML5 ne semble d'ailleurs pas autoriser
autre chose de du commentaire en contenu lorsqu'il
y a src mais peut-etre me trompe-je

http://www.w3.org/TR/html5/scripting-1.html#the-script-element
http://www.w3.org/TR/html5/scripting-1.html#inline-documentation-for-external-scripts

Merci pour toute info
A+
Bol
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pascal Poncet
Le #23528241
Le 03/07/2011 10:39, Bol a écrit :
Salut



Ave,

{"parsetags": "explicit"}
</script>



Oui ce n'est pas très orthodoxe.
Je crois qu'ils exploitent le dilemme entre l'interprétation du HTML et
la construction du DOM par les navigateurs.

Pour faire simple, le contenu de l'élément <script> est ignoré par
l'interpréteur HTML, et n'est donc pas passé au moteur JS pour exécution.
Mais, par contre, ce contenu est construit et récupérable dans l'arbre
DOM, à charge pour un script quelconque de l'exploiter pour y trouver,
par exemple, des paramètres de configuration.

Le hic, à mon avis, est que cela oblige à employer la fonction "eval()"
sur le contenu récupéré, pour pouvoir l'exploiter.

Je ne sais pas pourquoi ils ont choisi cette méthode plutôt que de
passer les paramètres dans l'url, comme dans cet exemple :
Ce n'est pas plus dur à récupérer et surtout sans risque.

http://www.w3.org/TR/html5/scripting-1.html#the-script-element



Effectivement, si le futur standard est implémenté tel quel, ils vont
avoir quelques problèmes avec leur bibliothèque, à moins que j'aie loupé
un truc.

--
Cordialement,
Pascal
Pascal Poncet
Le #23528421
Le 03/07/2011 19:36, Pascal Poncet a écrit :
Le hic, à mon avis, est que cela oblige à employer la fonction "eval()"
sur le contenu récupéré, pour pouvoir l'exploiter.



Pardon de me répondre à moi-même, mais je viens de voir une autre
possibilité que le "evil/eval" !

En fait, on peut cloner le contenu dans un nouvel élément <script> créé
dynamiquement et ajouté dans le DOM.

Par exemple, on aurait le source HTML suivant, dont le deuxième script
permet de récupérer les paramètres du premier en les stockant dans
l'objet "extParams" :

<html>
<head>
<title>Test JS</title>
{"message": "coucou !"}
</script>
</head>
<body>
<p>Valeur à récupérer : <span id="msg"></span></p>
<script>
var scriptTags = document.getElementsByTagName("script");
for (var i=0, len = scriptTags.length; i < len; i++) {
if (! scriptTags[i].src) continue;
if (scriptTags[i].src.indexOf("params.js") >= 0 ) {
var params = scriptTags[i].innerHTML;
var newScriptTag = document.createElement("script");
newScriptTag.innerHTML = "var extParams = " +
params + ";";
scriptTags[i].parentNode.appendChild(newScriptTag);
}
}
</script>
</body>
</html>

Et le script externe "params.js", qui peut ainsi disposer des propriétés
de l'objet "extParams", ici pour en incorporer une ("message") dans le
document en cours :

window.onload = function() {
var msgString = extParams["message"];
var msgContainer = document.getElementById("msg");
msgContainer.innerHTML = msgString;
}

Testé FF 5.0 seulement.

C'est sûrement un truc comme ça que Google a dû bricoler dans cette
bibliothèque.


--
Cordialement,
Pascal
Bol
Le #23528451
Bonsoir,

<script type="text/javascript"
src="https://apis.google.com/js/plusone.js">
{"parsetags": "explicit"}
</script>



Je ne sais pas pourquoi ils ont choisi cette méthode plutôt que de passer
les paramètres dans l'url, comme dans cet exemple :



Moi je vois tout de suite ;-)
un seul .js dans le cache quelques soient les params

http://www.w3.org/TR/html5/scripting-1.html#the-script-element



Effectivement, si le futur standard est implémenté tel quel, ils vont
avoir quelques problèmes avec leur bibliothèque, à moins que j'aie loupé
un truc.



D'autant qu'on peut lire sur le Draft HTML5 :
Editor : Ian Hickson, Google, Inc

;-)

A+
Bol
Publicité
Poster une réponse
Anonyme