Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Интроспекция глобальных переменных, неужели в IE это невозможно никак?! 
:(
    Опции темы
Любитель
Дата 27.11.2009, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 1
Всего: 92



Задача очень проста. Есть window, надо получить список глобальных переменных в контексте этого окна. Везде работает банальное
Код

for (var name in window)
    // ...


В ие это не работает. Максимум, что удалось найти - берут innerHTML для инлайновых скриптов (в ие он работает), грузят через XHR (ну.. неважно, как именно) внешние скрипты, мёржат весь код в одну переменную и.. затем что-т такое:
Код

var names = code.replace(/\W/g, ' ').split(' ');
for (var i = 0; i < names.length; i++)
{
    var name = names[i];
    if (window[name])
        // ...
}


Понятно, что загрузка внешних скриптов в этом решении во-первых ужасна, а во-вторых некорректна (если один урл может вернуть разные скрипты). Ну и плюс всё решение отстойное, при обили eval-а.

Да, если что - код не мой. Нужна обработка полученного сгенеренного контента и скриптов. Фиксированный список возможных имён тоже не могу задать - ибо его нету (очень часты переменные вроде div124567890).


--------------------
PM MAIL ICQ Skype   Вверх
diadiavova
Дата 28.11.2009, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 11
Всего: 142



Цитата

неужели в IE это невозможно никак?
Ну не то, что бы совсем никак...Если переменные объявлять вот так
Код

window.myVariable = "blahblahblah";
То возможно smile 



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Любитель
Дата 28.11.2009, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 1
Всего: 92



Эх.. Это я знаю. Проблема в том, что имеющийся код от меня не зависит.

 smile 
ИЕ - это зло! smile 


--------------------
PM MAIL ICQ Skype   Вверх
diadiavova
Дата 29.11.2009, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 11
Всего: 142



Тогда можно, например, в коде создать массив с объявленными именами и при необходимости обходить его. Всё лучше чем регекспами обходить скрипты.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Любитель
Дата 29.11.2009, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 1
Всего: 92



Цитата(Любитель @  27.11.2009,  01:49 Найти цитируемый пост)
Фиксированный список возможных имён тоже не могу задать - ибо его нету (очень часты переменные вроде div124567890). 

Пока сделал частично фиксированный список, частично выдёргивание номеров (ну.. они тоже так или иначе в итоговом хтмле-присутствуют) и мёржинг их с ещё одним списком. Но, само собой, мне это жутко не нравится. Ибо ужасный хардкод, следовательно обещать, что это будет стабильно работать тяжело.. Понятно, что в случае нормальных браузером список переменных выдёргивается динамически.


--------------------
PM MAIL ICQ Skype   Вверх
diadiavova
Дата 29.11.2009, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 11
Всего: 142



Что значит нету списка переменных? Откуда ты берёшь код? Он что часто меняется, имена переменных генерятся на сервере, или они создаются в коде динамически?


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Любитель
Дата 29.11.2009, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 1
Всего: 92



Генерятся на сервере. Динамически. Не на моём smile



--------------------
PM MAIL ICQ Skype   Вверх
diadiavova
Дата 29.11.2009, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 11
Всего: 142



Ну если на сервере имена создаются рэндомно, тогда фиг знает.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0578 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.