Я наткнулся на этот код
<script class="example" type="text/javascript">
и было любопытно, есть ли возможность записать это в свой код
Я наткнулся на этот код
<script class="example" type="text/javascript">
и было любопытно, есть ли возможность записать это в свой код
Я просто проверил быстрый тест с этой разметкой:
<!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.
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>
Визуальное стилирование, вероятно, не очень подходит для этого. Где-то он может быть использован для динамического выбора одного из многих фрагментов 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));
Единственное, что я могу придумать для наличия свойства class
для script, это то, что jQuery может выбрать элемент и выполнить некоторые манипуляции, например, дублировать его.
Единственный экземпляр, который я могу придумать, когда это было бы полезно, - это когда теги script динамически добавляются на страницу (функция кометы), так как это один из немногих случаев, когда вы действительно можете взаимодействовать с script тег.
Согласно стандарту w3c, как описано w3schools.com a script tag действительно поддерживает Глобальные атрибуты, одним из которых является атрибут 'class'. Таким образом, совершенно "законно" иметь теги script с определенным атрибутом класса, а браузеры, которые нарушают это, не полностью совместимы с w3c. Идентификатор "Глобальный атрибут" также поддерживается тегом script.
Что касается возможной полезности наличия тегов script с "классом" или "идентификатором", то для этого потребуется очень конкретная утилита, для которой происходит перемещение документа w3c или абстракции DOM, прежде чем отправлять его для отображения клиентский браузер. В этом случае средство внесения изменений в документ может быть выполнено с использованием выбора стиля CSS, а наличие "id" и "class" для скриптов группировки может быть полезно по ряду причин.
Это узкий и конкретный случай, но тот, на который я фактически вовлечен в этот самый момент. Сказать, что нет никакой пользы, это узкомысленный и сказать, что это незаконно по стандартам, является ложным. Он может не поддерживаться во всех браузерах, но для браузеров, даже современных, не редкость интерпретировать стандарт w3c по-разному и реализовать свою версию поддержки стандартов по-своему.
Полезно при использовании самого тега script в качестве ссылки для смежных селекторов.
то есть.
.example + iframe {height: none;}
<script class="example" type="text/javascript" src="//weird-addon.js">
</script>
Я думаю, что не совсем правильно использовать атрибут класса. Согласно w3schools script -tag не поддерживает стандартные атрибуты, к которым принадлежит свойство класса. Поэтому jQuery может выбрать его при использовании фильтрации для класса, но у вас нет гарантии. Также он не уверен, что поведение во всех браузерах одинаковое.
Вероятно, вы можете использовать класс или идентификатор, чтобы стереть ваш script, написанный внутри него по соображениям безопасности, например.
<script id="erasable" type="text/javascript">
//your code goes here
document.getElementById('erasable').innerHTML = "";
</script>
Непосредственная польза, которая приходит мне на ум, заключается в том, что Javascript/Jquery/etc теперь может выбрать этот элемент script по имени класса.
Я не вижу никакой пользы, поскольку:
Возможный случай:
Если вы хотите поставить .png поверх script, используя css. С z-индексом.
Добавление класса или идентификатора позволяет вам выбрать тег 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?
Я нашел добавление класса в тег script, полезный при разработке редактора кода, который позволяет редактировать javascript в определенных блоках на странице,
<div id="idForABlock">
<script class="jsCustomJavascript">
//user generated code
</script>
</div>