Exemplo do botão +1 do Google:
<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
{"parsetags": "explicit"}
</script>
A tag do script possui um atributo src e conteúdo. O que isso significa e como funciona?
javascript
usr
fonte
fonte
Respostas:
Navegadores diferentes tratam isso de maneira diferente. Alguns executam o conteúdo apenas se ele
src
estiver incluído sem erros. Alguns o executam após tentar incluir osrc
script, independentemente do sucesso. Como esse comportamento não é confiável (e é proibido no HTML5 ), ele deve ser evitado.O Google não está confiando em nenhum comportamento específico. Como o conteúdo é apenas um objeto literal (um valor), sua execução não faria nada além de causar um erro silencioso. O código do Google analisa o conteúdo da
script
própria tag e ajusta seu comportamento com base nisso.fonte
src
atributo estiver presente e, na verdade, não for um objeto literal, esse código produziria umSyntaxError
se executado, é simplesmente "texto JSON" que o script usará por si só mais tarde.s=document.getElementsByTagName('script'); text = s[s.length-1].innerHTML;
acho que não há maneira de buscar o conteúdo de um nó de script que não envolva tocar no DOM .Se um elemento de script tiver um atributo src , o conteúdo deverá ser ignorado, qualquer outro comportamento não será conforme.
Nos blogs (como um hack), foi sugerido colocar o conteúdo no elemento, sabendo que ele não será avaliado. Em seguida, use os métodos DOM para obter o conteúdo como uma string e avaliá- lo ou inseri-lo em um novo elemento de script. Nenhuma dessas é uma boa ideia.
fonte
De acordo com a especificação de rascunho do HTML5 , os
<script>
elementos comsrc
atributos devem ter apenas código comentado, cujo objetivo é fornecer documentação para o script. No entanto, não parece que o Google esteja em conformidade com esta especificação.fonte
Após o carregamento do script, ele procura dentro de sua própria tag de script para acessar seu conteúdo.
Ele usará algum código semelhante a este:
Cortesia de John Resig .
fonte