Странное поведение CAutoComplete в IE
Странное поведение CAutoComplete в IE
Странное поведение наблюдаю:
- при переходе по ссылке загружается страничка с полем CAutoComplete, при вводе буковок появляется индикатор запроса и все - так и остается висеть, на сервер ничего не посылается ( смотрю по логам сервера, вообще в логах загрузка только странички по адресу из ссылки ).
- при нажатии на кнопку обновления поле начинает нормально работать ( в логах сервера кроме загрузки этой странички появляются еще все скрипты, стили, картинки )
Как можно заставить IE сразу с перехода по ссылке все загружать?
IE 8 версия ( 8.0.6001.18702 )
- при переходе по ссылке загружается страничка с полем CAutoComplete, при вводе буковок появляется индикатор запроса и все - так и остается висеть, на сервер ничего не посылается ( смотрю по логам сервера, вообще в логах загрузка только странички по адресу из ссылки ).
- при нажатии на кнопку обновления поле начинает нормально работать ( в логах сервера кроме загрузки этой странички появляются еще все скрипты, стили, картинки )
Как можно заставить IE сразу с перехода по ссылке все загружать?
IE 8 версия ( 8.0.6001.18702 )
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Странное поведение CAutoComplete в IE
Что такое «кнопка обновления»?
Нравится Yii? Давайте сделаем его лучше!.
Re: Странное поведение CAutoComplete в IE
Это такая кнопочка, на которой нарисованы 2 стрелочки по условной окружности, тыкающие друг друга в задницу ( или, проще говоря, то что по эффекту совпадает с нажатием на F5 )
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Странное поведение CAutoComplete в IE
Похоже, какой-то кеш. Вообще, лучше всего не использовать устаревший CAutoComplete, а сразу попробовать http://www.yiiframework.com/doc/api/1.1 ... oComplete/.
Нравится Yii? Давайте сделаем его лучше!.
Re: Странное поведение CAutoComplete в IE
Я в нем ничего не ковырял, стоит из коробки.Sam Dark писал(а):Похоже, какой-то кеш. Вообще, лучше всего не использовать устаревший CAutoComplete, а сразу попробовать http://www.yiiframework.com/doc/api/1.1 ... oComplete/.
По поводу CJuiAutoComplete: такая штука получается:
Код: Выделить всё
$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
'name'=>CHtml::activeName($model,'name'),
'sourceUrl'=>array('autocomplete', 'json'=>1),
// additional javascript options for the autocomplete plugin
'options'=>array(
'showAnim'=>'fold',
'select'=>'function(event, ui) { alert("select"); this.value = ui.item.value; }',
'minLength'=>2
),
'htmlOptions'=>array(
'style'=>'height:20px;'
),
));
Код: Выделить всё
jQuery('#Recipe_pat_name').autocomplete(
{
'showAnim':'fold',
'select':'function(event, ui) { alert(\"select\"); this.value = ui.item.value; }',
'minLength':2,
'source':'/index.php?r=patient/autocomplete&json=1'
}
);
Какой есть способ, кроме как пройтись своими грязными ногами по коду виджета?
Re: Странное поведение CAutoComplete в IE
Код: Выделить всё
'select':'js:function(event, ui) { alert(\"select\"); this.value = ui.item.value; }',
Re: Странное поведение CAutoComplete в IE
Продолжу ( ничего, что я сам с собой тут разговариваю? ):
Вот что дает эксплоурер по поводу ошибок ( при переходе по ссылке на страницу ), кстати, и на новом виджете тоже самое, поэтому он тоже работает только после нажатия F5:
я плохо разбираюсь в том, что должно быть у эксплоурера, но обычно говорят про ActiveXObject()
Вот что дает эксплоурер по поводу ошибок ( при переходе по ссылке на страницу ), кстати, и на новом виджете тоже самое, поэтому он тоже работает только после нажатия F5:
вот что интересного в этом файле jquery.js:Сведения об ошибке на веб-странице
Агент пользователя: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)
штамп времени: Thu, 28 Oct 2010 08:17:26 UTC
Сообщение: Объект не поддерживает это свойство или метод
Строка: 4954
Символ: 5
Код: 0
URI-код: http://ru/assets/8641cb4f/jquery.js
Код: Выделить всё
xhr: window.XMLHttpRequest && (window.location.protocol !== "file:" || !window.ActiveXObject) ?
function() {
return new window.XMLHttpRequest(); // вот эта строка 4954
} :
function() {
try {
return new window.ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {}
},
Re: Странное поведение CAutoComplete в IE
Вау-вау !!!BuCeFaL писал(а):Код: Выделить всё
'select':'js:function(event, ui) { alert(\"select\"); this.value = ui.item.value; }',
Спасибо огромное !!!
( подозреваю, что проход грязными ногами по коду привел к бы к такому же результату, только за большее время, правда, с большим понимаем внутренностей yii )
Еще раз огромное спасибо!!!
Re: Странное поведение CAutoComplete в IE
http://www.yiiframework.com/doc/api/1.1 ... ode-detail
в документации про js: не нашел, но есть отличный комент:
Код: Выделить всё
public static function encode($value)
{
if(is_string($value))
{
if(strpos($value,'js:')===0)
return substr($value,3);
else
return "'".self::quote($value)."'";
}
//...
}
This function doesn't add quotes around value if content is string and begins from "js:" without quotes.
Re: Странное поведение CAutoComplete в IE
проверка такого кода:
дает предсказуемый результат:
первая строка говорит "object"
вторая - ошибку
получается, jquery где-то промахивается в условии приназначении свойства:
говорит "yes" в эксплоурере, есть над чем подумать
странно:
первый алерт говорит, что все хорошо ( см. приложенный рисунок )
а второй говорит ошибку:
Код: Выделить всё
<script>
alert(new window.ActiveXObject("Microsoft.XMLHTTP"));
alert(new window.XMLHttpRequest());
</script>
первая строка говорит "object"
вторая - ошибку
получается, jquery где-то промахивается в условии приназначении свойства:
Код: Выделить всё
<script>
alert(window.XMLHttpRequest?"yes":"no");
</script>
странно:
Код: Выделить всё
<script>
alert(window.XMLHttpRequest);
alert(new window.XMLHttpRequest());
</script>
а второй говорит ошибку:
вот как-то такСведения об ошибке на веб-странице
Агент пользователя: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)
штамп времени: Thu, 28 Oct 2010 08:40:11 UTC
Сообщение: Объект не поддерживает это свойство или метод
Строка: 49
Символ: 1
Код: 0
URI-код: http://ru/index.php?r=recipe/create
- Вложения
-
- 2010-10-28_123717.png (3.28 КБ) 4414 просмотров
Re: Странное поведение CAutoComplete в IE
IE реализуют ассинхронный js чезез объект ActiveXObject в то время как остальные через объект XMLHttpRequest.
как результат у IE нету XMLHttp ,а у остальных Activex. в jquery ошибки нету, они выполнели большую часть работы за программиста а именно :
определение какой же объект использовать и обработку событий + состояний.
как результат у IE нету XMLHttp ,а у остальных Activex. в jquery ошибки нету, они выполнели большую часть работы за программиста а именно :
определение какой же объект использовать и обработку событий + состояний.
Re: Странное поведение CAutoComplete в IE
Да, я тоже про это и говорю - проход по коду значительно расширяет кругозор в yiiBuCeFaL писал(а):в документации про js: не нашел, но есть отличный комент:Код: Выделить всё
public static function encode($value) { if(is_string($value)) { if(strpos($value,'js:')===0) return substr($value,3); else return "'".self::quote($value)."'"; } //... }
This function doesn't add quotes around value if content is string and begins from "js:" without quotes.
Re: Странное поведение CAutoComplete в IE
вот я же привел результаты алертов - том видно, что что-то не так в датком королевстве:BuCeFaL писал(а): IE реализуют ассинхронный js чезез объект ActiveXObject в то время как остальные через объект XMLHttpRequest.
как результат у IE нету XMLHttp ,а у остальных Activex. в jquery ошибки нету, они выполнели большую часть работы за программиста а именно :
определение какой же объект использовать и обработку событий + состояний.
то ли кто-то определяет такой объект, то ли экплоурер подвирает, но первая проверка выходит в true, и поэтому эксплоурер уходит не в ту ветку.
теперь еще один эксперимент:
Код: Выделить всё
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>alert</title>
</head>
<body>
<script>
alert(window.XMLHttpRequest);
alert(new window.XMLHttpRequest());
</script>
</body>
</html>
Re: Странное поведение CAutoComplete в IE
Вот еще:
дает в IE:
Код: Выделить всё
function Dump(d,l) {
if (l == null) l = 1;
var s = '';
if (typeof(d) == "object") {
s += " {\n";
for (var k in d) {
for (var i=0; i<l; i++) s += " ";
s += k+": " + Dump(d[k],l+1);
}
for (var i=0; i<l-1; i++) s += " ";
s += "}\n"
} else {
s += "" + d + "\n";
}
return s;
}
document.write(Dump(window.XMLHttpRequest));
профит{ }
Re: Странное поведение CAutoComplete в IE
пришлось походить грязными ногами по коду и вставил в layout такой пошлый кусок:
Код: Выделить всё
<script type="text/javascript">
/*<![CDATA[*/
jQuery(function($) {
if( $.browser.msie )
jQuery.ajaxSetup({
xhr: function() {
try {
return new window.ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {}
}
})
});
/*]]>*/
</script>
Может, напоследок, кто-нибудь подскажет, куда вписать красиво этот кусок?Тебя излупят плетками и ты запрыгаешь, как миленькая
Re: Странное поведение CAutoComplete в IE
Ну и еще вопрос: как заставить не отсылать форму при выборе значения в autocomplete клавишей "Enter" ?
тут с точностью до наоборот:
в IE, Firefox, Chrome форма не отправляется
в Опере - отправляется
тут с точностью до наоборот:
в IE, Firefox, Chrome форма не отправляется
в Опере - отправляется