Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Проблема со скриптом в IE 8 (https://javascript.ru/forum/jquery/6901-problema-so-skriptom-v-ie-8-a.html)

Tok_13 03.01.2010 18:20

Проблема со скриптом в IE 8
 
<html>
$GLOBAL_PAGENAME$
<body class="body_main_pages">
<?if(($USER_AGENT$='firefox' && substr($USER_AGENT_VER$,0,1)>2)||($USER_AGENT$='ie ' && substr($USER_AGENT_VER$,0,1)>6))?>
$RCODE_1$
<div class="div_noscript_none">
$ADMIN_BAR$
$GLOBAL_AHEADER$
$GLOBAL_CLEFTER$
$BODY$
<span id="jsonon">$TIME$</span>
<script>
$(document).ready(function(){
$('#jsonon').load(location.href+' #jsonon',function () {
var a_i=$('#jsonon').text();
var a_2=a_i.substr(6,2);
var b_2=a_i.substr(3,2);
var c_2=a_i.substr(0,2);
function cl()
{
if (a_2==59)
{
a_2=0;
b_2++;
} else {
if (a_2<59)
{
a_2++;
}
}
if (b_2==60)
{
b_2=0;
c_2++;
}
if (c_2==24)
{
c_2=0;
}
if (a_2<10)
{
stra='0'+a_2;
} else {
stra=a_2;
}
if (b_2<10)
{
strb='0'+b_2;
} else {
strb=b_2;
}
if (c_2<10)
{
strc='0'+c_2;
} else {
strc=c_2;
}
document.getElementById('jsonon').innerHTML=strc+' :'+strb+':'+stra;
};
setInterval(cl, 1000);
});
});
</script>

$GLOBAL_DRIGHTER$
$GLOBAL_BFOOTER$
<?substr($POWERED_BY$,0,0)?>
</div>
<?else?>
$RCODE_3$
<div class="text_black_around">сейчас вы используете браузер<span class="otstup_horizontal_px_6"></span><span class="text_black_around_bold"><?if($USER_AGENT$=' ie'||$USER_AGENT$='firefox')?><?if($USER_AGENT$='i e')?>Internet Explorer<?endif?><?if($USER_AGENT$='firefox')?>Moz illa Firefox<?endif?><?else?>$USER_AGENT$<?endif?> (версия $USER_AGENT_VER$)</span></div>
<div class="otstup_vertical_px_10"></div>
<div class="text_black_around">
<?if(($USER_AGENT$='firefox' && substr($USER_AGENT_VER$,0,1)<3)||($USER_AGENT$='ie ' && substr($USER_AGENT_VER$,0,1)<7))?>смените версию браузера на более позднюю!<?else?>смените браузер!<?endif?>
</div>
$RCODE_4$
<?endif?>
</body>
</html>

Вот код страницы со скриптом. В браузере Mozilla Firefox всё работает нормально с методом load. В IE 8 же вылезает ошибка: Требуется объект (код 0) Строка 1, символ 1. Я не понимаю в чём проблема, но она возникает именно тогда, когда начинает работать функция load. Подскажите, пожалуйста, в чём проблема и как её исправить.

subzey 05.01.2010 11:56

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

И попробуйе продебажить сами: Вы нашли «сомнительное» место, натыкайте туда алертов и посмотрите, что же происходит.

Tok_13 05.01.2010 12:04

<span id="jsonon">$TIME$</span>
<script>
$(document).ready(function(){
$('#jsonon').load(location.href+' #jsonon',function () {
var a_i=$('#jsonon').text();
var a_2=a_i.substr(6,2);
var b_2=a_i.substr(3,2);
var c_2=a_i.substr(0,2);
function cl()
{
if (a_2==59)
{
a_2=0;
b_2++;
} else {
if (a_2<59)
{
a_2++;
}
}
if (b_2==60)
{
b_2=0;
c_2++;
}
if (c_2==24)
{
c_2=0;
}
if (a_2<10)
{
stra='0'+a_2;
} else {
stra=a_2;
}
if (b_2<10)
{
strb='0'+b_2;
} else {
strb=b_2;
}
if (c_2<10)
{
strc='0'+c_2;
} else {
strc=c_2;
}
document.getElementById('jsonon').innerHTML=strc+' :'+strb+':'+stra;
};
setInterval(cl, 1000);
});
});
</script>


Вот основной код. Происходит обновление участка кода на странице, и данные, которые вновь подгружены, впоследствии выполняются в функции. Ошибки в firefox никакой нет, более того, в IE 7 ошибок вообще не возникает. Сомнительных участков кода я не нашёл. Ошибка в IE 8 как раз возникает в тот самый момент, когда выполняется функция load. Причём самое интересное, что если в функции указать просто ссылку и полностью подгрузить страницу, ошибки не возникает. Если же указать после ссылки селектор id, как у меня, то возникает ошибка.

Tok_13 05.01.2010 12:12

Хм.. странно.. но избавился только что от ошибки, сделав так:

$('#jsonon').load(location.href+  $('#jsonon').text(),function () {...});


Теперь ошибки не возникает.


Часовой пояс GMT +3, время: 20:33.