Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   Код Javascript не функционирует на сетевом диске (https://javascript.ru/forum/css-html-internet-explorer/75890-kod-javascript-ne-funkcioniruet-na-setevom-diske.html)

ellexpron 15.11.2018 08:41

Код Javascript не функционирует на сетевом диске
 
Добрый день!

Имеется код всплывающего списка со строкой поиска.
Код прекрасно выполняется, когда находится на локальном диске (C или D - не важно).
К сожалению, когда файл находится на сетевом диске, то код не функционирует, а именно - не осуществляется поиск и всплывающее меню не появляется.
Подскажите, пожалуйста, в чем проблема?

<!-- saved from url=(0014)about:internet -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>

<BODY>
<div id="podst"></div>
<INPUT type="text" class="opis" />
 
<script>
var streetArr=[
['ТЕСТ1','https://javascript.ru/forum/'],
['ТЕСТ2','https://javascript.ru/book'],
['Адрес абонентского отдела/ЦПО','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_210/3.html'],
['Время работы абонентского отдела/ЦПО','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_210/3.html'],
['Настройка роутера','http://tkc.bis.bashtel.ru/servicedesk/internet/567.html'],
['Настройка модема','http://tkc.bis.bashtel.ru/servicedesk/internet/567.html'],
['Высокоскоростное подключение/PPPoE','http://tkc.bis.bashtel.ru/servicedesk/internet/567.html'],
['Таблица скоростей ADSL/Профиль/Модуляция','http://tkc.bis.bashtel.ru/servicedesk/internet/profilskorosti_ADSL.htm'],
['Трассировка','http://tkc.bis.bashtel.ru/servicedesk/internet/111.html'],
['IP/DNS сервера','http://tkc.bis.bashtel.ru/servicedesk/mcntt/103.html'],
['Замер/тест скорости','http://tkc.bis.bashtel.ru/servicedesk/internet/56.html'],
['Виртуальный IP-офис','http://tkc.bis.bashtel.ru/servicedesk/uslugi/uslugi12.html'],
['Расчетная служба','http://tkc.bis.bashtel.ru/servicedesk/rasch/inf.html'],
['Переадресация/с домашнего на сотовый','http://tkc.bis.bashtel.ru/servicedesk/rasch/01.html'],
['АОН/Определитель номера','http://tkc.bis.bashtel.ru/servicedesk/rasch/01.html'],
['ДВО','http://tkc.bis.bashtel.ru/servicedesk/rasch/01.html'],
['Склонность к оттоку','http://tkc.bis.bashtel.ru/servicedesk/mcntt/41.html'],
['Гарантия на оборудование/роутер/модем/приставка','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_210/1.html'],
['Сроки предоставления обратной связи/ОС','http://tkc.bis.bashtel.ru/servicedesk/mcntt/74.html'],
['Разновидности кабелей/кабели','http://tkc.bis.bashtel.ru/servicedesk/mcntt/23.html'],
['Разновидности пультов/пульты','http://tkc.bis.bashtel.ru/servicedesk/mcntt/22.html'],
['Разновидности кнопок WiFi на ноутбуке','http://tkc.bis.bashtel.ru/servicedesk/mcntt/24.html'],
['IPTV 2.0','http://tkc.bis.bashtel.ru/servicedesk/raznoe/212.html'],
['Инструкции IPTV БИС','http://tkc.bis.bashtel.ru/servicedesk/uslugi/411.html'],
['Инструкции IPTV РТК','http://tkc.bis.bashtel.ru/servicedesk/uslugi/630.html'],
['Защита территорий/Акция Дорогой абонент','http://tkc.bis.bashtel.ru/servicedesk/mcntt/25.html'],
['Защита территорий ВСЕГДА НА СВЯЗИ/БУДЬ НА СВЯЗИ','http://tkc.bis.bashtel.ru/servicedesk/mcntt/25_1.html'],
['Объединение лицевых счетов','http://tkc.bis.bashtel.ru/servicedesk/uslugi/622.html'],
['Повышение стоимости тарифного плана/ТП/акции','http://tkc.bis.bashtel.ru/servicedesk/mcntt/15.html'],
['Изменение условий тарифного плана/ТП/акции','http://tkc.bis.bashtel.ru/servicedesk/mcntt/37.html'],
['Презентации','http://tkc.bis.bashtel.ru/servicedesk/mcntt/36.html'],
['Акции','http://tkc.bis.bashtel.ru/servicedesk/mcntt/SMMENU.html'],
['Тарифы','http://tkc.bis.bashtel.ru/servicedesk/mcntt/SMMENU.html'],
['Пакетные предложения','http://tkc.bis.bashtel.ru/servicedesk/mcntt/SMMENU.html'],
['Расторжение договора','http://tkc.bis.bashtel.ru/servicedesk/mcntt/8.html'],
['Игровой','http://tkc.bis.bashtel.ru/servicedesk/mcntt/98.html'],
['Вспомогательные услуги/замена кабеля/удлинение кабеля','http://tkc.bis.bashtel.ru/servicedesk/mcntt/47.html'],
['Дом24/Умный дом','http://tkc.bis.bashtel.ru/servicedesk/mcntt/100.html'],
['Антивирус Dr.Web/Доктор Веб','http://tkc.bis.bashtel.ru/servicedesk/mcntt/7.html'],
['Интернет-цензор/Родительский контроль Интернета','http://tkc.bis.bashtel.ru/servicedesk/mcntt/7.html'],
['Электронная почта','http://tkc.bis.bashtel.ru/servicedesk/mcntt/7.html'],
['Публичный Wi-Fi/вай-фай','http://tkc.bis.bashtel.ru/servicedesk/mcntt/7.html'],
['Видеоконференцсвязь','http://tkc.bis.bashtel.ru/servicedesk/mcntt/7.html'],
['Звукоусиление','http://tkc.bis.bashtel.ru/servicedesk/mcntt/7.html'],
['Хостинг','http://tkc.bis.bashtel.ru/servicedesk/mcntt/7.html'],
['Игровой портал/Торрент','http://tkc.bis.bashtel.ru/servicedesk/mcntt/7.html'],
['Карты/Таксофонная карта/IP-карта','http://tkc.bis.bashtel.ru/servicedesk/mcntt/7.html'],
['Статический/выделенный IP-адрес','http://tkc.bis.bashtel.ru/servicedesk/mcntt/7.html'],
['Программа Переезд/перенос услуг','http://tkc.bis.bashtel.ru/servicedesk/mcntt/7.html'],
['Скрипт речевой','http://tkc.bis.bashtel.ru/servicedesk/mcntt/29_1.html'],
['Скрипт по продажам','http://tkc.bis.bashtel.ru/servicedesk/mcntt/29_2.html'],
['Скрипт по Игровому','http://tkc.bis.bashtel.ru/servicedesk/mcntt/29_3.html'],
['Скрипт по работе с конфликтными абонентами','http://tkc.bis.bashtel.ru/servicedesk/mcntt/29_4.html'],
['Скрипт по работе в нестандартной ситуации','http://tkc.bis.bashtel.ru/servicedesk/mcntt/29_5.html'],
['Ростелеком переадресация/звонки не из РБ','http://tkc.bis.bashtel.ru/servicedesk/mcntt/26.html'],
['Контактные телефоны компании/справочные службы','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_210/5.html'],
['Реквизиты компании','http://tkc.bis.bashtel.ru/servicedesk/mcntt/33.html'],
['Договор в электронном виде','http://tkc.bis.bashtel.ru/servicedesk/mcntt/33.html'],
['График сканирования платежей','http://tkc.bis.bashtel.ru/servicedesk/mcntt/81_6.html'],
['Даты блокировки абонентов','http://tkc.bis.bashtel.ru/servicedesk/mcntt/81_7.html'],
['Отсрочка платежа','http://tkc.bis.bashtel.ru/servicedesk/mcntt/95.html'],
['Способы оплаты/Как оплатить','http://tkc.bis.bashtel.ru/servicedesk/mcntt/94.html'],
['Способы оповещения об оплате/Как оповещают об оплате','http://tkc.bis.bashtel.ru/servicedesk/int_pl/27.html'],
['Перерасчет начислений/абонент не согласен с начислениями','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_100/3.html'],
['Абонент хочет вернуть оборудование/Возврат оборудования','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_100/3.html'],
['Перевод денег/с одного лицевого на другой/абонент неверно оплатил','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_100/5.html'],
['Ошибочная оплата','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_100/5.html'],
['Претензия на техника/3ЛТП','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_100/6.html'],
['Претензия на абонентский отдел/ЦПО','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_100/6.html'],
['Претензия на оператора/1ЛТП','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_100/6.html'],
['Претензия на агента/ГАП','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_100/6.html'],
['Копия договора','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_100/8.html'],
['Запрос справки/Отсутствие долга','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_100/7.html'],
['Судебное извещение/Претензии по суду/Судебный приказ','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_100/9.html'],
['Алгоритм Обслуживание юридических лиц','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_210/4.html'],
['Алгоритм - Бронирование/разбронирование','http://tkc.bis.bashtel.ru/servicedesk/mcntt/16.html'],
['Алгоритм по г. Стерлитамак','http://tkc.bis.bashtel.ru/servicedesk/mcntt/13.html'],
['Алгоритм - Амедипремиум/AmediaPremium','http://tkc.bis.bashtel.ru/servicedesk/raznoe/637.html'],
['Алгоритм - Твое кино','http://tkc.bis.bashtel.ru/servicedesk/raznoe/681.html'],
['Алгоритм - СпутникТелеком','http://tkc.bis.bashtel.ru/servicedesk/mcntt/32.html'],
['Алгоритм - Кабель напрямую в ПК/компьютер/ноутбук','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_200/3.html'],
['Алгоритм - Кабель от роутера в ПК/компьютер/ноутбук','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_200/4.html'],
['Алгоритм - Подключение по WiFi','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_200/5.html'],
['Алгоритм - ADSL','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_200/6.html'],
['Алгоритм - IPTV БИС','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_200/7.html'],
['Алгоритм - IPTV РТК','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_200/7_1.html'],
['Алгоритм - Телефония','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_200/10.html'],
['Алгоритм - Кабельное ТВ/КТВ','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_200/8.html'],
['Алгоритм - Радио','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_200/9.html'],
['Алгоритм - Низкая скорость','http://tkc.bis.bashtel.ru/servicedesk/mcntt/mcntt_200/12.html']

].sort();
 
 
document.onkeyup=function(e)
{
var e=e||window.event;
var E=e.srcElement||e.target;
if(E.className=="opis")
    {
    current_Target=E;
        var autocompl='';
        var m=0;
        for(var i=0;i<streetArr.length;i++)
                {
                if(streetArr[i][0].toLowerCase().indexOf(current_Target.value.toLowerCase())!=-1)
                    {
                    autocompl+="<option value='"+streetArr[i][1]+"'>"+streetArr[i][0]+"<\/option>";m++;
                    }
                }
        if(autocompl!="")
            {if(m>20){m=20}
            document.getElementById("podst").innerHTML='\
            <select  \
             multiple size='+m+' >'+autocompl+'<\/select>';
            }
        else{}
    }
}
document.onclick=function(e){ 

   var e=e||window.event;
   var E=e.srcElement||e.target;
   if(E.tagName=="OPTION" || E.value && E.tagName=="SELECT") {
      window.location = E.value;
   }
}
</SCRIPT>
</BODY>
</html>


Когда работают в ПО "CssMagic", то при срабатывании кода появляется ошибка:


Nexus 15.11.2018 09:23

https://beautifier.io/
Похоже один из элементов массива streetArr равен нулю либо цикл выходит за пределы массива, однако я не вижу в коде ситуации, при которой значение переменной i станет больше или равно длине массива.

ps. вместо того, чтобы каждый раз выполнять одну и ту же операцию current_Target.value.toLowerCase() можно было бы выполнить её единожды, сохранив результат в переменную и дальше работать уже с этой переменной.
Также вам стоит более осмысленно подходить к именованию переменных, да и соблюдать code style было бы неплохо.

MallSerg 15.11.2018 09:37

Вылетел за границы массива в 114 строке. streetArr.length - 1

ellexpron 15.11.2018 09:50

Цитата:

Сообщение от MallSerg (Сообщение 498595)
Вылетел за границы массива в 114 строке. streetArr.length - 1

Благодарю! Ошибка выполнения сценария не появляется, но проблема с тем, что скрипт не работает на сетевом диске - сохраняется. Скрипт на локальном диске работает, а на сетевом - нет.

Nexus 15.11.2018 10:01

Цитата:

Сообщение от MallSerg
Вылетел за границы массива в 114 строке.

Можете пояснить?
По-моему там нет ошибки.
var arr=[1,2,3], res='';
for(var i=0;i<arr.length;i++)
	res+=arr[i]+' ';

alert(res);

MallSerg 15.11.2018 10:28

В теории должно работать.
Просто в сообщении об ошибке написано где и что сломалось.

Nexus 15.11.2018 10:40

MallSerg, ну так нету же выхода за пределы массива...

MallSerg 15.11.2018 11:12

Цитата:

Сообщение от Nexus (Сообщение 498606)
MallSerg, ну так нету же выхода за пределы массива...

В нормальных браузерах да. Но возможно используется ненормальный браузер. Остается только гадать в каком окружении оно работает.

Цитата:

Скрипт на локальном диске работает, а на сетевом - нет.
Слишком мало информации. возможно не правильно указываешь пути до файла https://ru.wikipedia.org/wiki/File_(...%D0%B2_Windows.

Правильно для таких целей использовать веб сервер.

ellexpron 15.11.2018 11:43

Цитата:

Сообщение от MallSerg (Сообщение 498607)
В нормальных браузерах да. Но возможно используется ненормальный браузер. Остается только гадать в каком окружении оно работает.


Слишком мало информации. возможно не правильно указываешь пути до файла https://ru.wikipedia.org/wiki/File_(...%D0%B2_Windows.

Правильно для таких целей использовать веб сервер.

Путь указываю следующего вида - http://tkc.bis.bashtel.ru/servicedesk/mcntt/search.html

Открывается сама страница через программу компании, которая работает на IE, но какая версия НЕИЗВЕСТНО :( Возможно это сделать через "Просмотр HTML-кода"?
На версии IE11 все работает прекрасно.


Nexus 15.11.2018 12:02

Цитата:

Сообщение от MallSerg
Но возможно используется ненормальный браузер.

Если такой браузер не может банально перебрать в цикле массив, то под него невозможно код писать, ибо как он его исполнит неизвестно.

ellexpron, попробуйте после 113 строки написать это:
return void document.write(JSON.stringify(streetArr));

То что на странице появится после клика на элемент с классом "opis" напишите здесь.
Может сортировка криво работает и убивает некоторые элементы, это все-таки ie.

ellexpron 15.11.2018 12:24

Цитата:

Сообщение от Nexus (Сообщение 498612)
Если такой браузер не может банально перебрать в цикле массив, то под него невозможно код писать, ибо как он его исполнит неизвестно.

ellexpron, попробуйте после 113 строки написать это:
return void document.write(JSON.stringify(streetArr));

То что на странице появится после клика на элемент с классом "opis" напишите здесь.
Может сортировка криво работает и убивает некоторые элементы, это все-таки ie.

Ругается на то, что значение JSON - неопределенно. :cray:

Nexus 15.11.2018 12:30

Про json в ie https://stackoverflow.com/a/7193129/9914716

MallSerg 15.11.2018 13:54

Цитата:

Сообщение от ellexpron
Ругается на то, что значение JSON - неопределенно.

это значит что JSON еще нет в этой версии.

На скриншоте значки из 6 делфи в нем есть стандартный компонент WebBrowser он использует системную библиотеку mshtml.dll а она уже на каждой системе своя.
Ие 5-6 версий открывает файлы только из доверенных сайтов. и по сети открывать не будет.

SuperZen 15.11.2018 13:59

можно по пробывать подключить polyfill JSON для древних ослов )

https://github.com/bestiejs/json3

Web Browsers
Windows Internet Explorer, version 6.0 and higher

Nexus 15.11.2018 14:48

ellexpron, а если это после 113-й строки вставить?
var arrayLength = streetArr.length,
    response = [];

for (var index = 0; true; index++) {
    if (!(index in streetArr))
        break;

    if (streetArr[index] === null)
        response += 'is-null';
    else if ('length' in streetArr[index])
        response += 'array.len=' + streetArr[index].length;
    else
        response += 'not-array';

    response += '; ';
};

prompt('Response', response + 'arrayLength: ' + arrayLength + '; last-index: ' + index);

return;

ellexpron 15.11.2018 15:36

Выдает новое окно:

Nexus 15.11.2018 15:38

ellexpron, нужен не скриншот, а полный текст, который находится в текстовом поле этого окошка.

ellexpron 15.11.2018 15:41

Цитата:

Сообщение от Nexus (Сообщение 498642)
ellexpron, нужен не скриншот, а полный текст, который находится в текстовом поле этого окошка.

array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; array.len=2; arrayLength: 93; last-index: 92

Nexus 15.11.2018 15:49

ellexpron, напишите полный исходный код страницы, что расположилась по этому адресу:
http://tkc.bis.bashtel.ru/servicedesk/mcntt/search.html

У вас в шапке в массиве только 90 элементов, в результате 93.
Может у вас и код совсем другой, а не тот, что в первом сообщении.

ellexpron 16.11.2018 06:46

Цитата:

Сообщение от Nexus (Сообщение 498644)
ellexpron, напишите полный исходный код страницы, что расположилась по этому адресу:
http://tkc.bis.bashtel.ru/servicedesk/mcntt/search.html

У вас в шапке в массиве только 90 элементов, в результате 93.
Может у вас и код совсем другой, а не тот, что в первом сообщении.

Я пару строк с гиперссылкой убрал, потому что ограничения сайта не дают полностью залить код.

Вот сам код https://pastebin.com/uf3Ha0Ua

ellexpron 19.11.2018 11:58

Вопрос решен.


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