Изменилось ли определение модуля jQuery в версии BPMonline 7.5 относительно версии 7.2 ?
В версиях BPMonline 7.2 и 7.5 есть библиотечный модуль на Java Script, который называется jQuery. Не может ли кто сказать - изменилось ли определение этого модуля в версии BPMonline 7.5 относительно версии 7.2 ? Дело в том что я взял готовый модуль на Java Script (в зависимостях которого был объявлен только jQuery) в версии 7.2 и перенёс его в приложение, которое делаю в версии 7.5. При сохранении перенесённого модуля в 7.5. появляется сообщение: "Похоже, исполняемый на этой странице сценарий занят или не отвечает. Вы можете остановить его сейчас, открыть сценарий в отладчике или позволить сценарию продолжить свою работу." В окне ошибок первым появляется следующее сообщение "Function declarations should not be placed in blocks. Use the function expression or move the statement to the top of the other function." Ниже привожу код на который "жалуется" система:
function(jQ) {
(function($) {
if ($.fn.inputmask === undefined) {
//helper functions
function isInputEventSupported(eventName) {
var el = document.createElement("input"),
eventName = "on" + eventName,
isSupported = (eventName in el);
if (!isSupported) {
el.setAttribute(eventName, "return;");
isSupported = typeof el[eventName] == "function";
}
el = null;
return isSupported;
} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
});
Система жалуется на объявление функции внутри оператора if ($.fn.inputmask === undefined) . Что здесь сделано неправильно? Из-за чего возникает данная ошибка. Ведь этот код работал в BPMonline 7.2, а в 7.5 не хочет!
P.S. В окне структуры указал в депенденсах jQuery. В свойствах всё прописал как положено (посмотрел как это было сделано в 7.2).
Нравится
Добрый день, Евгений.
С версии 7.2 до версии 7.5 изменилась структура создания замещающего клиентского модуля. Вы можете посмотреть на новую схему в любой странице редактирования в 7.5. Например, можете посмотреть код ActivityPageV2.
В двух словах, базовый код замещающей клиентской схемы пишется так:
image2014-9-29_13-9-31.png (прикреплен)
image2014-9-29_13-11-1.png (прикреплен)
Методы пишутся в объекте methods, который собирается по иерархии.
Я вообще зелёный новичок в Java Script. Получается, что в версии 7.5 определять функцию внутри блока оператора if(){} нельзя? Скажите мне русским языком. По крайней мере, в ActivityPageV2 нет определения функций внутри блоков оператора if(){}. И вообще, ActivityPageV2 создана как простой модуль или как схема модели представления карточки ? Потому что свой модуль я создавал как простой модуль, т.е. зашёл на вкладку "Конфигурация", там выбрал нужный мне пакет и выполнил Добавить/Расширенные/Модуль. Покажите, пожалуйста, как мне нужно переписать код в моём случае, что бы он работал?
Евгений, попробуйте заменить объявление функции
function isInputEventSupported(eventName) {...}
на следующее выражение:
var isInputEventSupported = function(eventName) {...}
Дальнейшее использование функции отличаться не должно.
Да, похоже таким образом проблема с определением функций решается. Спасибо.