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 и стало всё читабельным...))) Спасибо!!!!))) Но теперь у меня всплывающие блоки блин не отображает, которые в этих хтмл-ках... наверно что-то со стилями этих блоков?

Yulia100207 09.11.2012 17:33

Цитата:

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

после перекодировки у меня в мозиле стали иероглифы показывать....зато в ie читабельно... что за ерунда? почему?

DjDiablo 09.11.2012 17:34

в хроме всплывает
в мозилле у менчя вроде тоже нет не каких иероглифов.

Yulia100207 09.11.2012 17:39

Цитата:

Сообщение от DjDiablo (Сообщение 215040)
в хроме всплывает
в мозилле у менчя вроде тоже нет не каких иероглифов.

да всплывает и в опере тоже... яназад вернула в анси все страницы

DjDiablo 09.11.2012 17:39

кстатии раз теперь всё в UTF-8
то злополучную строчку наверное уже можно заремарарить или удалить.
//if(httpRequest.overrideMimeType) httpRequest.overrideMimeType('text/html; charset=windows-1251');

Yulia100207 09.11.2012 17:40

Цитата:

Сообщение от Yulia100207 (Сообщение 215043)
да всплывает и в опере тоже... яназад вернула в анси все страницы

дело в том что пока вы смотрели я вернула всё на место... поэтому щас в мозиле всё показывает нормально... а в ie та же ситуация....

DjDiablo 09.11.2012 17:42

Блин я за вами не успеваю :)

DjDiablo 09.11.2012 17:45

если всё в utf 8 то обратите внимание что overrideMimeType, вам будет вредить, читайте #14 топик.
Если всётаки 1251 то попробуйте колдавать с header на сервере

если не поможет, то я могу перейти на страницу и поглядеть что не так.

devote 09.11.2012 17:47

вот это
httpRequest.overrideMimeType('text/html; charset=windows-1251');

вообще то нужно вызывать после метода .open()

Yulia100207 09.11.2012 17:48

Цитата:

Сообщение от DjDiablo (Сообщение 215044)
кстатии раз теперь всё в UTF-8
то злополучную строчку наверное уже можно заремарарить или удалить.
//if(httpRequest.overrideMimeType) httpRequest.overrideMimeType('text/html; charset=windows-1251');

Фух..))) всё перевела в utf и строку закоментировала, только сейчас всё ок... можете глянуть..))) а вот блок не всплывает в ie

DjDiablo 09.11.2012 17:52

ок, смотрю

DjDiablo 09.11.2012 18:01

В хроме кракозябры, после очистки кэша щас всё норм.
Мой IE Наглухо отказывается перейти на ваш сайт, и переадресовывает меня на поисковик.
Так что поглядеть в IE не могу, сорри.

Yulia100207 09.11.2012 18:05

Цитата:

Сообщение от DjDiablo (Сообщение 215055)
В хроме кракозябры, после очистки кэша щас всё норм.
Мой IE Наглухо отказывается перейти на ваш сайт, и переадресовывает меня на поисковик.
Так что поглядеть в IE не могу, сорри.

попробуйте зайти сюда ...., а там на бронирование туров нажать и должны зайти...мож с сылкой что-то в ie

DjDiablo 09.11.2012 18:18

помогло спасибо.

по консоли причина пока не очевидна

единственное что бросилось в глаза дак это то что многие скрипты подключены как <script type="text/javascript" charset="windows-1251" src="/online/public/js/page_callback.js?rev=-2040425124"></script>

не знаю может ли это быть источником проблемы, некогда не слышал о таком.

Yulia100207 09.11.2012 18:56

у меня всплывающее окно сделано на css без скрипта...везде оно отображает а в ie нет....почему? с позиционированием всё в норме, не пойму почему тогда

Yulia100207 09.11.2012 19:10

может какой- то хак есть для него..а???

Yulia100207 09.11.2012 19:12

это то что у меня в css

.b-popup-paranja {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1000;

background: rgba(0,0,0,0.6);
cursor: default;

visibility: hidden;
opacity: 0;

-webkit-transition: opacity .4s, visibility .4s;
-moz-transition: opacity .4s, visibility .4s;
-o-transition: opacity .4s, visibility .4s;
transition: opacity .4s, visibility .4s;
}

.b-popup {
top: -200px;
right: 0;
left: 0;
z-index: 2000;
position: relative;

opacity: 0;
visibility: hidden;

height: 0;

text-align: center;

-webkit-transition: opacity .4s, visibility .4s, top .4s;
-moz-transition: opacity .4s, visibility .4s, top .4s;
-o-transition: opacity .4s, visibility .4s, top .4s;
transition: opacity .4s, visibility .4s, top .4s;
}
.b-popup-in {
position: relative;

display: inline-block;

max-width: 90%;
z-index: 2000;
top: -200px;


padding: 10em 1.375em 0;
margin: 10em 0;

text-align: center;

background: #FFF;

-webkit-border-radius: 1em;
-moz-border-radius: 1em;
border-radius: 1em;
-webkit-box-shadow: 0 0 5px rgba(0,0,0,0.7);
-moz-box-shadow: 0 0 5px rgba(0,0,0,0.7);
-o-box-shadow: 0 0 5px rgba(0,0,0,0.7);
box-shadow: 0 0 5px rgba(0,0,0,0.7);
}

.b-popup-paranja:target {
visibility: inherit;
opacity: 1;
-webkit-transition: opacity .4s;
-moz-transition: opacity .4s;
-o-transition: opacity .4s;
transition: opacity .4s;
}
.b-popup-paranja:target+.b-popup {
visibility: inherit;
opacity: 1;
top: 10%;
-webkit-transition: opacity .4s, top .4s;
-moz-transition: opacity .4s, top .4s;
-o-transition: opacity .4s, top .4s;
transition: opacity .4s, top .4s;
}

.b-popup-closer {
position: absolute;
top: -0.75em;

right: -0.75em;

width: 1.5em;
height: 1.5em;

text-align: center;
line-height: 1.4em;

text-decoration: none;

background: #333;
background: rgba(0,0,0,0.7);

-webkit-border-radius: 1em;
-moz-border-radius: 1em;
border-radius: 1em;
-webkit-box-shadow: 0 0 4px rgba(0,0,0,0.7);
-moz-box-shadow: 0 0 4px rgba(0,0,0,0.7);
-o-box-shadow: 0 0 4px rgba(0,0,0,0.7);
box-shadow: 0 0 4px rgba(0,0,0,0.7);
}
.b-popup-closer:before {
content: "x";

font-size: 1.2em;

color: rgba(255,255,255,0.9);
text-shadow: 0 -1px rgba(0,0,0,0.9);
}

@media (max-device-width: 1024px) {
/* Fixing iOS bug with visibility+opacity transitions */
.b-popup,
.b-dropdown-popup,
.b-popup-paranja {
opacity: 1 !important;
}


.b-paranja,
.b-popup-paranja {
display: none;
}
}



.b-popup-in #tab{
width: 80%;
text-align: center;
margin: 0.5em;
font-family: tahoma, arial, "sans serif";

}

.b-popup-in #tab td{
border:2px solid #fff;
}

.b-popup-in td{
background-color: #b4cef3;
border:2px solid #fff;
}

Yulia100207 09.11.2012 19:14

а это то что у меня в html:

(<a href="#SomePopup2">расписание рейсов</a>), ....
<a id="SomePopup2" class="b-popup-paranja" href="#x"></a>
<div class="b-popup">
<div class="b-popup-in">
<br>
<center><table id="tab" >
<tr id="trp">....

</tr>
</table>


<a class="b-popup-closer" href="#x"></a>
</div>
</div>

Yulia100207 09.11.2012 19:15

везде появляется а в ie нет...почему? сталкивались с таким?

lovial 14.05.2015 08:56

Некропостинг, поскольку проблема аналогичная...
Код (прикладываю) прекрасно отрабатывает в мозилле, опере, хроме. В ИЕ 8 не хочет...
При загрузке странички дебаггер пишет:
expected identifier, string or number строка 8 символ 72 (закрывающая фигурная скобка, если не ошибаюсь - при вставке кода сюда "скушались" пробелы в начале строк...)
При клике на кнопку выдает ошибки:
object expected строка 27 символ 1 (открывающая < инпута)
и строка 27 символ 24 (r2()).
Хотелось бы знать, где что не так...
И да, я не спец в джаваскрипте, ногами не бить в случае непонимания намеков...
Собственно, весь код странички:
<html>
<head>
<script language="javascript">
function r2() {
var q = {50:{12:{1:{100:202,150:176,200:164,250:142,300:12 8,350:113,400:98},
2:{100:150,150:131,200:120,250:107,300:98,350:91,4 00:84},
3:{100:126,150:110,200:98,250:91,300:84,350:78,400 :72},
4:{100:103,150:89,200:82,250:77,300:69,350:66,400: 63},},
13:{1:{100:196.75,150:171.5,200:159.75,250:138.5,3 00:124.75,350:110.25,400:95.75},
2:{100:146,150:127.75,200:116.75,250:104.25,300:95 .5,350:88.5,400:81.5},
3:{100:122.75,150:107,200:95.5,250:88.5,300:82,350 :76,400:70},
4:{100:100.5,150:86.75,200:79.75,250:75,300:67.25, 350:64.25,400:61.25},},
14:{1:{100:191.5,150:167,200:155.5,250:135,300:121 .5,350:107.5,400:93.5},
2:{100:142,150:124.5,200:113.5,250:101.5,300:93,35 0:86,400:79},
3:{100:119.5,150:104,200:93,250:86,300:80,350:74,4 00:68},
4:{100:98,150:84.5,200:77.5,250:73,300:65.5,350:62 .5,400:59.5},},},
45:{27:{1:{100:96.6,150:85.2,200:78.6,250:68.8,300 :61.2,350:54,400:46.8},
2:{100:72.4,150:63.6,200:58,250:51.4,300:46.8,350: 43.2,400:39.6},
3:{100:60.6,150:52.4,200:46.8,250:43.2,300:40.6,35 0:38.4,400:36.2},
4:{100:49.8,150:43.6,200:40,250:37,300:33.4,350:42 247,400:30.2},},},
};
alert (q[50][12][1][100]);
}
</script>
</head>
<body>
<input type='button' value='calc' onclick='r2();'>
</body>
</html>


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