Что делает этот комментарий /* @cc_on! @*/0 внутри оператора if в javascript?
немного вопрос об этом комментарии, который я нашел в электронной книге о HTML5:
/* @cc_on! @*/0 этот комментарий должен быть каким-то образом связан с распознаванием браузера IE, чтобы использовать document.createElement() для создания непризнанных элементов HTML5, но я не сделал этого, t найти полезную информацию о значении того, как это работает, даже автор не объясняет это. Может кто-нибудь объяснить мне, что это такое и что он делает, пожалуйста?
Спасибо за внимание!
ИЗМЕНИТЬ:
в электронной книге автор говорит:
Следующий пример демонстрирует, как решить проблему для всех новых элементов, введенных в HTML5. Здесь мы включаем все элементы wed, чтобы заставить IE распознать:
И вот код:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Styling Unknown Elements - 3</title>
<script>
(function() {
if (! /*@[email protected]*/ 0)
return;
var e = "abbr,article,aside,audio,canvas, datalist,details,eventsource,figure,footer,header,hgroup,mark,menu,meter,nav,output, progress,section,time,video".split(','),
i = e.length;
while (i--) {
document.createElement(e[i]);
}
})()
</script>
<style>
time {
font-style: italic;
}
</style>
...
Извините за ужасный отступ, но я использую планшет. В любом случае, посмотрите на тег script и при этом условии.
Ответы
Ответ 1
@cc_on Statement - это флаг условной компиляции для IE
(< 11) browser
Цитата из MSDN
@cc_on Statement (JavaScript)
Активирует поддержку условной компиляции в комментариях в script.
Внимание
Условная компиляция не поддерживается в Internet Explorer 11 Режим стандартов и приложения Windows Store. Условная компиляция поддерживается в режиме Internet Explorer 10 Standard и во всех предыдущих версиях версии.
/*@cc_on @*/
/*@
document.write("JavaScript version: " + @_jscript_version + ".");
document.write("<br />");
@if (@_win32)
document.write("Running on the 32-bit version of Windows.");
@elif (@_win16)
document.write("Running on the 16-bit version of Windows.");
@else
document.write("Running on a different operating system.");
@end
@*/
так
if(!/*@[email protected]*/0)
Если ваш браузер не знает условную компиляцию (кроме IE
< 11), выражение будет выглядеть следующим образом:
if(!0) // ==> TRUE
в противном случае это будет:
if(!!0) // ==> FALSE