Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   Джава скрипт не работает в ie (https://javascript.ru/forum/css-html-internet-explorer/33055-dzhava-skript-ne-rabotaet-v-ie.html)

Yulia100207 08.11.2012 19:00

Джава скрипт не работает в ie
 
Привет.У меня не работает скрипт в ie? в мозиле,опере без проблем всё отображает.Суть такова:
есть два селекта при выборе одного и второго должна подгружаться страница,но почему то она не отображается в ie.
Это то что прописано у меня в html:
<select name="TOWNFROMINC" class="TOWNFROMINC" id="SKV_SOURCE_TOUR" autocomplete="off" >{foreach from=$TOWNFROMINC item="item"}<option value="{$item.Inc}" {if $item.selected}selected{/if}>{$item.LName}</option>{/foreach}</select>

<select name="STATEINC" class="STATEINC" id="SKV_SOURCE_STATE" autocomplete="off" >{foreach from=$STATEINC item="item"}<option value="{$item.Inc}" {if $item.selected}selected{/if}>{$item.LName}</option>{/foreach}</select>

<div id="SKV_NOTES"></div>

<button class="load" onchange="skvLoadNotes();" disabled="disabled">##TOUR_SEARCH_REFRESH##</button>

а это то что написано в js:

window.onload = function () {skvLoadNotes();}
window.onchange = function () {skvLoadNotes();}

function skvLoadNotes()
{

var noteLink = 'data/notes/'; // Type a source to a folder where you have just located your notes.



var noteContent = document.getElementById('SKV_NOTES');

var sourceState = document.getElementById('SKV_SOURCE_STATE').option s[document.getElementById('SKV_SOURCE_STATE').select edIndex].value;
var sourceTour = document.getElementById('SKV_SOURCE_TOUR').options[document.getElementById('SKV_SOURCE_TOUR').selecte dIndex].value;

noteContent.innerHTML = '';
noteLink = noteLink + 'c' + sourceState + 't' + sourceTour + '.html';

var httpRequest = skvCreateRequestObject();

httpRequest.overrideMimeType('text/html; charset=windows-1251');

if (httpRequest)
{
httpRequest.open('get', noteLink, true);

httpRequest.onreadystatechange = function ()
{
if(httpRequest.readyState == 4)
{
if (httpRequest.status == 200)
{
noteContent.innerHTML = '<p> </p>' + httpRequest.responseText + '<p> </p>';
}
else
{
noteContent.innerHTML = '';
}
}
}

httpRequest.send();
}

}


function skvCreateRequestObject()
{

try {return new XMLHttpRequest()}
catch(e)
{
try {return new ActiveXObject('Msxml2.XMLHTTP')}
catch(e)
{
try {return new ActiveXObject('Microsoft.XMLHTTP')}
catch(e) {return null;}
}
}

}
Помогите пожалуйста разобраться в чём бок,почему експлоер его не видит???????

DjDiablo 08.11.2012 19:45

замените ваш skvCreateRequestObject на пример ниже
function skvCreateRequestObject(){
	try {
		return new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			return new ActiveXObject("Microsoft.XMLHTTP");
		} catch (ee) {}	
       }
	if (typeof XMLHttpRequest!='undefined') {
		return new XMLHttpRequest();
	}
}

Your 09.11.2012 10:38

catch не желательно и даже не нужно оставлять пустым.
не рекомендуется.

Yulia100207 09.11.2012 13:47

Цитата:

Сообщение от DjDiablo (Сообщение 214826)
замените ваш skvCreateRequestObject на пример ниже
function skvCreateRequestObject(){
	try {
		return new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			return new ActiveXObject("Microsoft.XMLHTTP");
		} catch (ee) {}	
       }
	if (typeof XMLHttpRequest!='undefined') {
		return new XMLHttpRequest();
	}
}

заменила я на это, но ничего так и не поменялось.... может где-то в другом месте надо поменять?

DjDiablo 09.11.2012 14:36

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

Вероятно проблема в чём то ещё кроме функции.
Консольку бы :)
Или другими словами ссылку на глючную страницу :)

DjDiablo 09.11.2012 14:41

к слову.
по моему с overrideMimeType в IE нелады какие-то

попробуйте вот такую строку, вместо overrideMimeType.
if(httpRequest.overrideMimeType) httpRequest.overrideMimeType('text/html; charset=windows-1251');

Yulia100207 09.11.2012 15:59

Цитата:

Сообщение от DjDiablo (Сообщение 214997)
к слову.
по моему с overrideMimeType в IE нелады какие-то

попробуйте вот такую строку, вместо overrideMimeType.
if(httpRequest.overrideMimeType) httpRequest.overrideMimeType('text/html; charset=windows-1251');

Попробовала...супер!!! помогло....))) но теперь вылез другой глюк в этом окошке у меня всплывающий блок и вот как он выглядит

Yulia100207 09.11.2012 16:01

теперь он то блок отобразил, но не отображает то что внутри него должно быть...не видит,какие-то иероглифы выдаёт...почему?

DjDiablo 09.11.2012 16:11

overrideMimeType неработает в ie, вы его пробывали вызывать и у вас происходила ошибка
мы сделали так что если overrideMimeType нет, то он и невызывается

либо на сервер измените заголовок (рекомендую)
header('Content-Type: text/html; charset=windows-1251');

либо если html ку запрашиваете, то попробуйте в ней прописать (точно незнаю, но не ваш помоему случай)
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

З.Ы. я почти уверен что вы в кодировке utf получаете, а сама страница в windows-1251, как дополнительный вариант всё вёрстку в utf перевести можно.

Yulia100207 09.11.2012 17:30

Цитата:

Сообщение от DjDiablo (Сообщение 215019)
overrideMimeType неработает в ie, вы его пробывали вызывать и у вас происходила ошибка
мы сделали так что если overrideMimeType нет, то он и невызывается

либо на сервер измените заголовок (рекомендую)
header('Content-Type: text/html; charset=windows-1251');

либо если html ку запрашиваете, то попробуйте в ней прописать (точно незнаю, но не ваш помоему случай)
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

З.Ы. я почти уверен что вы в кодировке utf получаете, а сама страница в windows-1251, как дополнительный вариант всё вёрстку в utf перевести можно.

да,вы правы, я все страницы в html перевела в utf и стало всё читабельным...))) Спасибо!!!!))) Но теперь у меня всплывающие блоки блин не отображает, которые в этих хтмл-ках... наверно что-то со стилями этих блоков?


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