Microsoft JScript: Не удается выполнить программу из освобожденного сценария
Доброго времени суток. Столкнулся с такой вот проблемой.
Описываю класс, вот так:
{
...
}
Потом в этом же скрипте определяю ему метод через прототип вот так (пробовал также описывать метод внутри класса):
...
}
В коннектор сохраняю ссылку на екзэмпляр этого клаксса.
При вызове этого метода (да и вообще любого метода класса) возникает ошибка:
Microsoft JScript: Не удается выполнить программу из освобожденного сценария.
Гугл говорит, что такая проблема может возникнуть в ИЕ при расширении яваскрипт объекта в другом фрейме и мол решение - не расширять.
Может кто сталкивался с подобной проблемой?
Просто я уже много раз так делал, да и в базовом функционале куча подобного кода, и никаких проблем не было, может что-то забыл, может проблема в конкретном интерпритаторе jscript'a ...
Нравится
Юрий, к сожалению, из-за особенностей реализации includ'ов в конфигурации перегрузка прототипов не поддерживается.
"Стоян Виталий" написал:Юрий, к сожалению, из-за особенностей реализации includ'ов в конфигурации перегрузка прототипов не поддерживается.
Как это!? scr_JSON, scr_RegExp например, там по всюду через прототип объявляются новые методы.
Ну и я пробовал не только перегрузкой через прототип, а так же добавлял метод в тело класса аля:
var MyClass = function () { this.MyMethod = function () {}; }
ошибка та же.
Да и сто процентов в других проектах пользовался именно таким методом и все работало...
Похоже проблема в том, что Вы сохраняете ссылку на js-объект в Connector. В базовой реализации от этого отходят, решая проблему включением необходимых скриптов с дальнейшим вызовом функций напрямую. Попробуйте сделать так же - включить скрипт, а дальше использовать функцию, а не передавать ссылку через коннектор.
"Стоян Виталий" написал:Похоже проблема в том, что Вы сохраняете ссылку на js-объект в Connector
Я Иисусом клянусь, что уже так делал и все работало на версии 3.3.х.х. Кстати, боюсь ошибится, но по-моему базовый функционал интеграции с CallCenter'а тоже создает JS-объекты на базе своих js-классов(в зависимости от типа CallCenter) и именно сохраняет ссылки в коннектор (если не прав - проправьте, а то под рукой нет TSAdmin'a).
Просто если решать проблему именно подключением скрипта - то как-то смысл классификации пропадает, да и тягать с собой все время скрипт как-то не охото...
По поводу колл-центра не подскажу, но вот по поводу includ'ов -- это тот способ, который обеспечит вызов и выполнение функций. Возможно Вы уже так делали, как хотите, и у Вас работало, но в силу особенностей конфигурации этот способ, увы, проходит не всегда.