Применяем Conditional Compilation JScript/JavaScript в IE
Начиная с версии IE 4+ появилась директива условного компилирования (СС). С ее помощью можно исполнять JScript/JavaScript код в зависимости от версии IE, а можно приспособить и для других браузеров.
Содержимое
Обзор синтаксиса
Включить условное компилирование, можно использовав диррективу @cc_on внутри вашего скрипта, или напрямую используя @if или @set выражения. Например:
<script type="text/javascript">
/*@cc_on
document.write("Версия JScript: " + @_jscript_version + ".<br>");
/*@if (@_jscript_version >= 5)
document.write("Версия JScript 5.0 или выше.<br />");
document.write("Ваш браузер поддерживает JScript 5+<br>");
@else @*/
document.write("У вас другой браузер (Firefox, IE 4.x ...)");
/*@end
@*/
</script>
Если вы используете IE любой версии, то обязательно увидите первый document.write(), если версию 5 и выше, то первых два document.write(), если ваша версия браузера отлична от IE 5+, например Firefox, Opera, IE 4.0, то вы увидите последний document.write().
Выражения @if, @elif, @else и @end
Вот список выражений, которые вы можете использовать при условном компилировании:
- @if
- @elif
- @else
- @end
if else логика (только для IE)
<script type="text/javascript">
/*@cc_on
@if (@_win32)
document.write("32-bit система. Браузер - IE.");
@else
document.write("не 32-bit система. Браузер - IE.");
@end
@*/
</script>
Этот пример работает только в Internet Explorer и сообщение, которое он вам выведет зависит от разрядности вашей операционной системы. Сравните его со следующим примером:
if else логика (IE и другие браузеры)
<script type="text/javascript">
/*@cc_on
/*@if (@_win32)
document.write("32-bit система. Браузер - IE.");
@else @*/
document.write("Браузер не IE (м.б. Firefox) браузер не 32-bit IE.");
/*@end
@*/
</script>
Манипулируя комментариями, мы заставили скрипт работать в других браузерах и в не 32-bit IE. Давайте теперь возьмем IE под полный контроль ;-)
if, elseif, else логика (только для IE)
<script type="text/javascript">
/*@cc_on
@if (@_jscript_version >= 5)
document.write("Браузер IE с поддержкой JScript 5+");
@elif (@_jscript_version >= 4)
document.write("Браузер IE с поддержкой JScript 4+");
@else
document.write("У вас очень старая версия IE");
@end
@*/
</script>
if, elseif, else логика (IE и другие браузеры)
<script type="text/javascript">
/*@cc_on
/*@if (@_jscript_version >= 5)
document.write("Браузер IE с поддержкой JScript 5+");
@elif (@_jscript_version >= 4)
document.write("Браузер IE с поддержкой JScript 4+");
@else @*/
document.write("Браузер не IE (не поддерживает JScript)");
/*@end
@*/
</script>
Ну и тоже самое, только с поддержкой не IE браузеров (как известно JScript присутствует только в IE, в других браузерах - JavaScript)
CC, try catch выражение и кроссбраузерный Ajax
Перейдем от теории к практике и используем новые знания для построения более полезного примера, а именно создадим скрипт, для кроссбраузерного ajax обьекта:
<script type="text/javascript">
function HttpRequest(url, parameters){
var pageRequest = false //variable to hold ajax object
/*@cc_on
@if (@_jscript_version >= 5)
try {
pageRequest = new ActiveXObject("Msxml2.XMLHTTP")
}
catch (e){
try {
pageRequest = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e2){
pageRequest = false
}
}
@end
@*/
if (!pageRequest && typeof XMLHttpRequest != 'undefined')
pageRequest = new XMLHttpRequest()
}
</script>
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии