Есть ли преимущество для размещения класса в теге script?

Я наткнулся на этот код

<script class="example" type="text/javascript">

и было любопытно, есть ли возможность записать это в свой код

Ответы

Ответ 1

Я просто проверил быстрый тест с этой разметкой:

<!DOCTYPE html>
<html>
<head>
    <style>
        .foo {
            display: block;
            border: 2px solid red;
            width: 10px;
            height: 10px;
        }
    </style>
</head>
<body>
    <script class="foo" type="text/javascript">
        alert("can you see me?");
    </script>
    after the script  
</body>
</html>

Результатом стал красный блок на экране, а содержимое тега script видно при запуске в Chrome. IE практически не отображает содержимое script. Таким образом, <script> можно рассматривать как любой другой тег, по крайней мере, в Chrome. Я бы сказал, что надзор за Chrome. Это Chrome 10.0.648.204 на 32-битной Windows 7.

effect of rendering the above html

EDIT: Firefox 4 также делает то же самое.

EDIT2: Возможный вариант использования? Используйте его как "источник показа" для script на своей странице, чтобы показать людям, как это работает, возможно, в блоге о JavaScript?

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
</head>
<body>
    <script class="foo" type="text/javascript">
        function foobar() {
            var a = 1;
        }   
    </script>
    after the script
    <a href="#">show me the script</a>

    <script type="text/javascript">
        $('a').click(function(event) {
            event.preventDefault();
            $("<div>").html($(".foo").text()).appendTo($("body"));
        });
    </script>
</body>
</html>

Ответ 2

Визуальное стилирование, вероятно, не очень подходит для этого. Где-то он может быть использован для динамического выбора одного из многих фрагментов script для использования в другом месте, например, с использованием языка шаблонов javascript.

Пример проприетарных ручек:

<script class="greeting english" type="text/x-handlebars-template">
    <p>Hello {{name}}</p>
</script>
<script class="greeting spanish" type="text/x-handlebars-template">
    <p>Hola {{name}}</p>
</script>

...

var greeting_template = Handlebars.compile($('script.greeting.' + language).html()); 
$('#header').append(greeting_template(user));

Ответ 3

Единственное, что я могу придумать для наличия свойства class для script, это то, что jQuery может выбрать элемент и выполнить некоторые манипуляции, например, дублировать его.

Ответ 4

Единственный экземпляр, который я могу придумать, когда это было бы полезно, - это когда теги script динамически добавляются на страницу (функция кометы), так как это один из немногих случаев, когда вы действительно можете взаимодействовать с script тег.

Ответ 5

Согласно стандарту w3c, как описано w3schools.com a script tag действительно поддерживает Глобальные атрибуты, одним из которых является атрибут 'class'. Таким образом, совершенно "законно" иметь теги script с определенным атрибутом класса, а браузеры, которые нарушают это, не полностью совместимы с w3c. Идентификатор "Глобальный атрибут" также поддерживается тегом script.

Что касается возможной полезности наличия тегов script с "классом" или "идентификатором", то для этого потребуется очень конкретная утилита, для которой происходит перемещение документа w3c или абстракции DOM, прежде чем отправлять его для отображения клиентский браузер. В этом случае средство внесения изменений в документ может быть выполнено с использованием выбора стиля CSS, а наличие "id" и "class" для скриптов группировки может быть полезно по ряду причин.

Это узкий и конкретный случай, но тот, на который я фактически вовлечен в этот самый момент. Сказать, что нет никакой пользы, это узкомысленный и сказать, что это незаконно по стандартам, является ложным. Он может не поддерживаться во всех браузерах, но для браузеров, даже современных, не редкость интерпретировать стандарт w3c по-разному и реализовать свою версию поддержки стандартов по-своему.

Ответ 6

Полезно при использовании самого тега script в качестве ссылки для смежных селекторов.

то есть.

.example + iframe {height: none;}
<script class="example" type="text/javascript" src="//weird-addon.js">
</script>

Ответ 7

Я думаю, что не совсем правильно использовать атрибут класса. Согласно w3schools script -tag не поддерживает стандартные атрибуты, к которым принадлежит свойство класса. Поэтому jQuery может выбрать его при использовании фильтрации для класса, но у вас нет гарантии. Также он не уверен, что поведение во всех браузерах одинаковое.

Ответ 8

Вероятно, вы можете использовать класс или идентификатор, чтобы стереть ваш script, написанный внутри него по соображениям безопасности, например.

<script id="erasable" type="text/javascript">
    //your code goes here
    document.getElementById('erasable').innerHTML = "";
</script>

Ответ 9

Непосредственная польза, которая приходит мне на ум, заключается в том, что Javascript/Jquery/etc теперь может выбрать этот элемент script по имени класса.

Ответ 10

Я не вижу никакой пользы, поскольку:

  • Выбор его с помощью CSS не не должен ничего делать (визуально)
  • Выбор его через JS не полезен, поскольку дублирование, удаление и т.д. не делает ничего (поскольку JS внутри загружается только один раз - любые изменения послесловия отбрасываются).

Ответ 11

Возможный случай:

Если вы хотите поставить .png поверх script, используя css. С z-индексом.

Ответ 12

Добавление класса или идентификатора позволяет вам выбрать тег script с Javascript, а затем получить его содержимое, например объект JSON, или что-то еще. Таким образом вы избегаете создания глобальной переменной (используя здесь jQuery):

<script id="datas" type="text/javascript">
    {"id": 1}
</script>

<script type="text/javascript">
    // This part of the code should be in a JS module
    // To avoid creating a global "object" variable
    var object = JSON.parse($('#datas').html());
    console.log(object.id); // Log "1"
</script>

Javascript templating engine также используют эту технику, например (Handlebars):

<script id="entry-template" type="text/x-handlebars-template">
    <div class="entry">
      <h1>{{title}}</h1>
      <div class="body">
        {{{body}}}
      </div>
    </div>
</script>

Подробнее читайте по этому вопросу: Есть ли стандарт для встраивания JSON в HTML?

Ответ 13

Я нашел добавление класса в тег script, полезный при разработке редактора кода, который позволяет редактировать javascript в определенных блоках на странице,

<div id="idForABlock">
<script class="jsCustomJavascript">
//user generated code
</script>
</div>