Доброго дня!
Возникла необходимость использовать стороннюю js-библиотеку на некоторых страницах. Подскажите, пожалуйста, каким образом можно по необходимости подключать скрипт, хранимый как .js файл. В моем случае нужно выполнить js-функцию из файла библиотеки на странице раздела. Интересует где необходимо размещать файл со скриптом и каким образом добавлять его на страницу, делая доступным для вызова в javascript'е страницы раздела, которую я редактирую на странице управления конфигурацией.

Нравится

3 комментария

Никто не сталкивался с подобной задачей? Может хоть подскажет кто где почитать, т.к. светлых идей нет совершенно, а время идет...

Можно просто создать модуль, скопировать в него код и подключить созданный модуль в define необходимой страницы.
Такой вариант прост в реализации, если в модулях нет ресурсов (например картинок).

Спасибо за ответ! Думал об использовании описанного Вами способа, но проблема как раз в том, что библиотека имеет набор ресурсов, кроме того, она состоит из нескольких зависимых js. Сейчас пришел к такому решению: разместил на сервере в папке Terrasoft.WebApp\Resources\ui необходимые библиотеки, далее в модуле страницы подключаю все эти js файлы по аналогии с jquery, т.е. перечисляя их в define. Решение рабочее, библиотеки успешно подгружаются. Но у меня есть сомнения в отношении корректности такого подхода с точки зрения разработки...

Показать все комментарии

Доброго времени суток. Столкнулся с такой вот проблемой.
Описываю класс, вот так:

var MyClass = function ()
{
...
}

Потом в этом же скрипте определяю ему метод через прототип вот так (пробовал также описывать метод внутри класса):

MyClass.prototype.NewMethod = function () {
...
}

В коннектор сохраняю ссылку на екзэмпляр этого клаксса.
При вызове этого метода (да и вообще любого метода класса) возникает ошибка:

Microsoft JScript: Не удается выполнить программу из освобожденного сценария.

Гугл говорит, что такая проблема может возникнуть в ИЕ при расширении яваскрипт объекта в другом фрейме и мол решение - не расширять.
Может кто сталкивался с подобной проблемой?
Просто я уже много раз так делал, да и в базовом функционале куча подобного кода, и никаких проблем не было, может что-то забыл, может проблема в конкретном интерпритаторе jscript'a ...

Нравится

5 комментариев

Юрий, к сожалению, из-за особенностей реализации 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'ов -- это тот способ, который обеспечит вызов и выполнение функций. Возможно Вы уже так делали, как хотите, и у Вас работало, но в силу особенностей конфигурации этот способ, увы, проходит не всегда.

Показать все комментарии