Что означает script -Tag с src AND content?

Пример из кнопки Googles +1:

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

Тег script имеет контент src-Attribute и. Что это значит и как это работает?

Ответ 1

Различные браузеры относятся к этому по-разному. Некоторые запускают контент только в том случае, если src включен без ошибок. Некоторые запускают его после попытки включить src script, независимо от успеха. Поскольку это поведение ненадежно (и запрещено в HTML5), его следует избегать.

Google не полагается на какое-либо конкретное поведение. Поскольку содержимое является просто литералом объекта (значением), выполнение его на самом деле ничего не сделало бы, кроме как причиной молчаливой ошибки. Код Google просматривает содержимое самого тега script и корректирует его поведение на основе этого.

Ответ 2

Если элемент script имеет атрибут src, содержимое должно игнорироваться, любое другое поведение не-совместимый.

В блогах (как хаке) было предложено разместить контент в элементе, зная, что он не будет оцениваться, затем используйте методы DOM, чтобы получить содержимое в виде строки и либо eval, либо вставить его в новый script. Ни одна из них не является хорошей идеей.

Ответ 3

Согласно спецификации HTML5, <script> элементы с атрибутами src должны иметь только код с комментариями, который предназначен для предоставления документации для script. Похоже, что Google не соответствует этой спецификации.

Ответ 4

После загрузки script он просматривает свой собственный тег script для доступа к его контенту.

Он будет использовать некоторый код, подобный этому:

var scripts = document.getElementsByTagName("script");
var data = eval(scripts[scripts.length - 1].innerHTML);

Предоставлено John Resig.