Статус: Новичок
Группы: Участники
Зарегистрирован: 15.10.2015(UTC) Сообщений: 1 
|
Пробую повторить пример (https://www.cryptopro.ru/sites/default/files/products/cades/demopage/cades_bes_sample.html) По ссылке работает как в IE, так и в Google Chrome. Пытаюсь повторить пример у себя - работает только в IE. В Google Chrome в консоли появляется ошибка на последнюю строку async_code.js: Код:Uncaught ReferenceError: async_resolve is not defined(anonymous function) @ async_code.js:1118
В самом конце файла async_code.js: async_resolve(); Когда копировал polyfill для Promise добавил (хоть и Chrome и без него умеет) Скрипты скопировал из исходного кода примера Код:<script src="/async_code.js"></script>
<script src="/code.js"></script>
<script src="/cadesplugin_api.js"></script>
Код на странице такой: Код:
<script>
$(function () {
$('#SignatureTxtBox').html('');
var canPromise = !!window.Promise;
if (canPromise) {
cadesplugin.then(
function () {
Common_CheckForPlugIn();
},
function (error) {
console.log(error);
}
);
} else {
window.addEventListener('message', function (event) {
if (event.data == 'cadesplugin_loaded') {
CheckForPlugIn_NPAPI();
} else if (event.data == 'cadesplugin_load_error') {
console.log('Плагин не загружен');
}
},
false);
window.postMessage('cadesplugin_echo_request', '*');
}
});
</script>
Получается при обращении к async_code.js и падает - выполнение на этом и заканчивается. В чем может быть проблема? Что не так делаю? Подскажите Google Chrome Версия 46.0.2490.64 beta-m P.S.: Где можно посмотреть актуальную версию документации по использованию и применению плагина? Нынешняя везде <object> предлагает добавлять на страницу Отредактировано пользователем 15 октября 2015 г. 14:14:01(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 12.04.2016(UTC) Сообщений: 19  Откуда: Екатеринбург Сказал(а) «Спасибо»: 2 раз Поблагодарили: 1 раз в 1 постах
|
Здравствуйте! Та же проблема, с функцией async_resolve. Где и как она реализована, не понятно.
для IE реализовал по примеру, всё работает, для остальных браузеров не получается подгрузить плагин, используя функционал тестовой страницы. у кого есть решения, просьба поделиться.
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
async_resolve определена в Code.js, если его включить до async_code.js будет работать. async_code.js мы подгружаем динамически т.к. IE не поддерживает функции генераторы.
|
|
 1 пользователь поблагодарил Анатолий Беляев за этот пост.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 12.04.2016(UTC) Сообщений: 19  Откуда: Екатеринбург Сказал(а) «Спасибо»: 2 раз Поблагодарили: 1 раз в 1 постах
|
у меня включено как вы говорите Код:
<script language="javascript" src="Code.js"></script>
<script type="text/javascript" src="async_code.js"></script>
возможно я что-то недопонимаю, объясните пожалуйста делаю простейшие действия: полностью сохраняю себе демо-страницу со всеми скриптами, скрипты подключены в нужном порядке. например вот эту https://www.cryptopro.ru...ge/cades_bes_sample.htmlно уже локально у себя в асинхронном режиме всё-равно получаю эту ошибку "async_resolve is not a function" но ведь по логике должно работать без каких-либо изменений?
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 12.04.2016(UTC) Сообщений: 19  Откуда: Екатеринбург Сказал(а) «Спасибо»: 2 раз Поблагодарили: 1 раз в 1 постах
|
когда прохожу в отладке, то действительно Сode.js грузится первее, чем async_code.js, но почему-то выходит так, что include_async_code() нигде не вызывается и соответственно async_resolve не инициализируется. Следующий подгружается async_code и как только догодит до неинициализированной переменно async_resolve, так возникает ошибка. в свою очередь include_async_code(), которая должна срабатывать при загрузке страницы в Common_CheckForPlugIn() последняя так же не вызывается в отладке видно, что на строчке проскакивает cadesplugin.then() и никогда не заходит, Код:
if (canPromise) {
cadesplugin.then(function () {
Common_CheckForPlugIn(); // эта функция не вызывается
//...
}
я попробовал убрать cadesplugin.then(function (), оставив только Common_CheckForPlugIn() тогда async_resolve инициализируется, не ругается, однако в последствии падает в функции Код:
// Функция активации асинхронных объектов КриптоПро ЭЦП Browser plug-in
function CreateObjectAsync(name) {
return pluginObject.CreateObjectAsync(name);
}
с ошибкой Cannot read property 'CreateObjectAsync' of undefined(…). возможно ответ очевиден, видимо я где-то не там ищу?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
Цитата:async_code.js мы подгружаем динамически из Common* функций Цепочка событий такая: Загружается Codes.js-> в странице выполняется Common_CheckForPlugIn()->заполняется async_resolve->загружается async_code.js переменная async_resolve заполняется указателем на функцию которая как раз скажет что async_code.js загрузился. |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 12.04.2016(UTC) Сообщений: 19  Откуда: Екатеринбург Сказал(а) «Спасибо»: 2 раз Поблагодарили: 1 раз в 1 постах
|
хорошо, а почему в cadesplugin.then(function () { } не выполняется, то что передается первым параметром onFulfilled? проблема в том, что Common_CheckForPlugIn() не вызывается.
Не могу понять почему?
когда дебаггером хожу по вашей демо-странице всё ок, а когда запускаю локально, то не выполняется
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 12.04.2016(UTC) Сообщений: 19  Откуда: Екатеринбург Сказал(а) «Спасибо»: 2 раз Поблагодарили: 1 раз в 1 постах
|
Автор: Edisson  хорошо, а почему в cadesplugin.then(function () { } не выполняется, то что передается первым параметром onFulfilled? проблема в том, что Common_CheckForPlugIn() не вызывается.
Не могу понять почему?
когда дебаггером хожу по вашей демо-странице всё ок, а когда запускаю локально, то не выполняется этот вопрос разрешился сам собой, когда запустился из под MSVS в проекте mvc, а не с локального диска.
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close