Objet JSON transmis au JavaScript externe – Technique Cool

Je regardais FireBug Lite et je vis qu'ils utilisaient une technique assez cool pour passer des options dans un fichier de script externe.

<script type="text/javascript" src="https://getfirebug.com/firebug-lite.js"> { overrideConsole: false, startInNewWindow: true, startOpened: true, enableTrace: true } </script> 

Je me demandais si quelqu'un connaissait le nom de cette technique et où je peux trouver plus d'informations à ce sujet ou comment cela fonctionne. Ça semble très cool. Merci!

Ce n'est pas une technique automatique de passage de variable que vous pourriez penser.

Tout leur code fait boucle toutes les balises de script jusqu'à ce qu'elles trouvent celle qui a chargé leur code (en comparant l'attribut src à une expression régulière ( /(firebug-lite(?:-\w+)?(?:\.js|\.jgz))(?:#(.+))?$/; ).

Si elle trouve la balise, elle obtient simplement le .innerHTML de la balise de script et l'évalue.

Je suppose que cette technique (sans nom) n'est pas pertinente dans le monde réel, car nous n'avons pas une méthode garantie pour trouver la marque de script qui se réfère à notre bibliothèque (en particulier, car il est commun que tous les scripts soient combinés en un script Fichier sur les serveurs en direct).

En outre, j'ai mes doutes quant à la façon dont le navigateur est ce qui se passe; Car il ne va certainement pas par la spécification , qui stipule:

Cela dit (et j'ai réfléchi): la spécification indique que le navigateur ne devrait pas interpréter les deux. Cependant, cela n'est pas pertinent avec cette technique. Le navigateur ne doit pas interpéter les deux, car le contenu du script est lu via innerHTML (et même s'il a lu dans le contenu, il ne cause aucun dommage de toute façon). Aslong que le navigateur est conforme aux spécifications, et charge l'URI (que tous les navigateurs font), il n'y a pas de problème! (En plus de ne pas savoir / garantir le script auquel votre bibliothèque appartient).

Le script peut être défini dans le contenu de l'élément SCRIPT ou dans un fichier externe. Si l'attribut src n'est pas défini, les agents utilisateurs doivent interpréter le contenu de l'élément comme le script. Si la src a une valeur URI, les agents utilisateurs doivent ignorer le contenu de l'élément et récupérer le script via l'URI.

(C.-à-d. Ne pas interpréter les deux).

Suite à la réponse de @ Matt, et pour clarifier mon commentaire:

 var doc = Firebug.browser.document; var script = doc.getElementsByTagName("script")[index]; var url = getScriptURL(script); var isExternal = url && url != doc.location.href; try { if(isExternal) { Ajax.request({url:url, onSuccess:renderProcess, onFailure:onFailure}) } else { var src = script.innerHTML; renderProcess(src) } } catch(e) { onFailure() }