Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.12.2010, 17:40
Аватар для unbreaker88
Новичок на форуме
Отправить личное сообщение для unbreaker88 Посмотреть профиль Найти все сообщения от unbreaker88
 
Регистрация: 18.12.2010
Сообщений: 6

Как получить доступ к переменным класса в IE?
Здравствуйте. У меня стоит задача получить доступ к переменным на странице, а точнее к переменным класса. Для этого я перебираю циклом for...in все свойства объекта window:


var classA = function(){
}

var a = new classA();
var b = new classA();
var z = new Date();

for (var k in window) {
        if (typeof (window[k]) == "object" && window[k] instanceof classA) { // Здесь IE выдает ошибку
                alert('Variable ' + k + ' is a classA');
        }
}


В опере и хроме скрипт отрабатывает правильно, находит переменные a и b. Чего не скажешь про IE, который просто выдает ошибку в строке 9: "предполагается наличие объекта". Получается, что IE попросту не видит эти переменные в цикле. При этом мне нужно, чтобы скрипт работал именно под IE.
В чем может быть проблема?

Последний раз редактировалось unbreaker88, 18.12.2010 в 17:44.
Ответить с цитированием
  #2 (permalink)  
Старый 18.12.2010, 23:08
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Это особенность IE, ничего не поделать. Используйте массивы/объекты.
Ответить с цитированием
  #3 (permalink)  
Старый 18.12.2010, 23:56
Аватар для unbreaker88
Новичок на форуме
Отправить личное сообщение для unbreaker88 Посмотреть профиль Найти все сообщения от unbreaker88
 
Регистрация: 18.12.2010
Сообщений: 6

Сообщение от Kolyaj Посмотреть сообщение
Это особенность IE, ничего не поделать. Используйте массивы/объекты.
а каким образом использовать массивы? обьясните пожалуйста подробнее. Дело в том, что у меня нет никакой информации о созданных объектах, кроме имени класса.

Последний раз редактировалось unbreaker88, 18.12.2010 в 23:59.
Ответить с цитированием
  #4 (permalink)  
Старый 19.12.2010, 07:49
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

А зачем вообще что-либо пихать в глобальную область видимости?
А чтобы понять, что вам делать, нужно узнать, зачем вам это.
Ответить с цитированием
  #5 (permalink)  
Старый 19.12.2010, 11:48
Аватар для unbreaker88
Новичок на форуме
Отправить личное сообщение для unbreaker88 Посмотреть профиль Найти все сообщения от unbreaker88
 
Регистрация: 18.12.2010
Сообщений: 6

Сообщение от Kolyaj
А зачем вообще что-либо пихать в глобальную область видимости?
А чтобы понять, что вам делать, нужно узнать, зачем вам это.
В общем мне нужно внедрить кусок скрипта в страницу, которая уже содержит скрипт с объявленными переменными (скрипт генерится системой автоматически). В моем скрипте я должен получить доступ к этим переменным для последующей работы с ними. Все, что я знаю о сгенерированных переменых - то, что они есть, и имя класса, которому они пренадлежат. Вся проблема заключается в том, что система работает только под IE.
Ответить с цитированием
  #6 (permalink)  
Старый 19.12.2010, 17:47
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

все еще хуже, for( var k in window ) не видит глобальные переменные... а каким образом твой скрипт внедряется в страницу?
Ответить с цитированием
  #7 (permalink)  
Старый 19.12.2010, 19:32
Аватар для unbreaker88
Новичок на форуме
Отправить личное сообщение для unbreaker88 Посмотреть профиль Найти все сообщения от unbreaker88
 
Регистрация: 18.12.2010
Сообщений: 6

Сообщение от x-yuri Посмотреть сообщение
все еще хуже, for( var k in window ) не видит глобальные переменные... а каким образом твой скрипт внедряется в страницу?
Там система специфическая. Cognos 8, если встречался с таким. Там с помощью пользовательского интерфейса можно добавлять куски джаваскрипта, которые затем выполняются при запуске наряду со скриптом, сгенерированным системой автоматически (в нем же и создаются объекты, к которым я и хочу получить доступ с внедренного скрипта).

Последний раз редактировалось unbreaker88, 19.12.2010 в 19:37.
Ответить с цитированием
  #8 (permalink)  
Старый 19.12.2010, 21:03
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

а нельзя конструктор переопределить, чтобы он следил за созданием объектов? (возможно, реализацию нужно будет подправить)
var oldClassA = classA;
var classA = function(){
    if( ! classA._instances )
        classA._instances = [];
    var o = oldClassA.apply(this, arguments) || this;
    classA._instances.push( o );
    return o;
}
Ответить с цитированием
  #9 (permalink)  
Старый 19.12.2010, 22:31
Аватар для unbreaker88
Новичок на форуме
Отправить личное сообщение для unbreaker88 Посмотреть профиль Найти все сообщения от unbreaker88
 
Регистрация: 18.12.2010
Сообщений: 6

Сообщение от x-yuri Посмотреть сообщение
а нельзя конструктор переопределить, чтобы он следил за созданием объектов? (возможно, реализацию нужно будет подправить)
var oldClassA = classA;
var classA = function(){
    if( ! classA._instances )
        classA._instances = [];
    var o = oldClassA.apply(this, arguments) || this;
    classA._instances.push( o );
    return o;
}
Переопределить конструктор возможно, но я уже нашел другое решение, всем спасибо за помощь!
Ответить с цитированием
  #10 (permalink)  
Старый 19.12.2010, 23:06
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от unbreaker88
но я уже нашел другое решение
так расскажи, может кому пригодится
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить список элементов в localStorage? Бобр Общие вопросы Javascript 8 17.09.2013 14:32
как получить данные из reader.xmlData lfs2008 ExtJS 3 02.11.2010 19:12
Как получить ID брошенного элемента методом drop? evgenyan jQuery 6 11.10.2010 14:22
Как получить объект getElementById через this Polkan Events/DOM/Window 7 24.06.2010 18:00
Как получить файл с сервера AJlekceu AJAX и COMET 1 02.11.2008 13:41