Компонент возвратил код ошибки: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIDOMEventTarget.dispatchEvent] - PullRequest
1 голос
/ 19 октября 2011

Я очень новичок в javascript, так что прости меня за мое невежество.

В настоящее время я использую SWFAddress для создания глубоких ссылок для приложения Flex. Проблема в том, что в IE9 не работает функция истории браузера.

Я бы хотел это исправить, и, похоже, это не должно быть трудным исправлением.

Когда я отлаживаю скрипт в Firefox, я получаю следующее сообщение об ошибке:

Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIDOMEventTarget.dispatchEvent]
this.dispatchEvent(new SWFAddressEvent(type)); 

Это указывает на этот бит кода как на виновника:

_dispatch = function(type) {
            this.dispatchEvent(new SWFAddressEvent(type));
            type = type.substr(0, 1).toUpperCase() + type.substr(1);
            if(typeof this['on' + type] == FUNCTION)
                this['on' + type]();
        },

Я проверил и подтвердил, что объект SWFAddressEvent создается правильно без каких-либо проблем.

Проблема, кажется, заключается здесь:

this.dispatchEvent = function(event) {
    console.log(event);
        if (this.hasEventListener(event.type)) {
        console.log(event);
            event.target = this;
            for (var i = 0, l; l = _listeners[event.type][i]; i++)
                l(event);
            return TRUE;           
        }
        return FALSE;
    };

По какой-то причине dispatchEvent не получает созданное SWFAddressEvent.

Может кто-нибудь объяснить, что означает это сообщение об ошибке? И почему при первой загрузке страницы она может правильно отправлять 3 события, а когда возникает необходимость отправки дальнейших событий, кажется, что она не работает?

1 Ответ

0 голосов
/ 30 марта 2012

Мне кажется, что проблема в ссылке на this в:

this.dispatchEvent(new SWFAddressEvent(type));

Эта часть выполняется в обработчике событий, так что это не SWFAddress, а Window.

Я заменил его на SWFAddress.dispatchEvent(new SWFAddressEvent(type));, и это исправило - но я не эксперт JS.

Первые три события генерируются не так, как создает NS_ERROR_ILLEGAL_VALUE.

...