Ключевое слово в защите информации
ключевое слово
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Modex  
#1 Оставлено : 15 октября 2015 г. 14:12:46(UTC)
Modex

Статус: Новичок

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline Edisson  
#2 Оставлено : 19 апреля 2016 г. 9:22:15(UTC)
Edisson

Статус: Участник

Группы: Участники
Зарегистрирован: 12.04.2016(UTC)
Сообщений: 19
Российская Федерация
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
Здравствуйте!
Та же проблема, с функцией async_resolve. Где и как она реализована, не понятно.

для IE реализовал по примеру, всё работает, для остальных браузеров не получается подгрузить плагин, используя функционал тестовой страницы.
у кого есть решения, просьба поделиться.
Offline cross  
#3 Оставлено : 19 апреля 2016 г. 10:10:53(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
async_resolve определена в Code.js, если его включить до async_code.js будет работать.
async_code.js мы подгружаем динамически т.к. IE не поддерживает функции генераторы.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
thanks 1 пользователь поблагодарил Анатолий Беляев за этот пост.
Edisson оставлено 19.04.2016(UTC)
Offline Edisson  
#4 Оставлено : 19 апреля 2016 г. 12:37:42(UTC)
Edisson

Статус: Участник

Группы: Участники
Зарегистрирован: 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"

но ведь по логике должно работать без каких-либо изменений?
Offline Edisson  
#5 Оставлено : 19 апреля 2016 г. 13:17:33(UTC)
Edisson

Статус: Участник

Группы: Участники
Зарегистрирован: 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(…).

возможно ответ очевиден, видимо я где-то не там ищу?
Offline cross  
#6 Оставлено : 19 апреля 2016 г. 13:40:03(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 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 загрузился.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline Edisson  
#7 Оставлено : 19 апреля 2016 г. 14:05:16(UTC)
Edisson

Статус: Участник

Группы: Участники
Зарегистрирован: 12.04.2016(UTC)
Сообщений: 19
Российская Федерация
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
хорошо, а почему в cadesplugin.then(function () { } не выполняется, то что передается первым параметром onFulfilled? проблема в том, что Common_CheckForPlugIn() не вызывается.

Не могу понять почему?

когда дебаггером хожу по вашей демо-странице всё ок, а когда запускаю локально, то не выполняется
Offline Edisson  
#8 Оставлено : 19 апреля 2016 г. 15:44:45(UTC)
Edisson

Статус: Участник

Группы: Участники
Зарегистрирован: 12.04.2016(UTC)
Сообщений: 19
Российская Федерация
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
Автор: Edisson Перейти к цитате
хорошо, а почему в cadesplugin.then(function () { } не выполняется, то что передается первым параметром onFulfilled? проблема в том, что Common_CheckForPlugIn() не вызывается.

Не могу понять почему?

когда дебаггером хожу по вашей демо-странице всё ок, а когда запускаю локально, то не выполняется


этот вопрос разрешился сам собой, когда запустился из под MSVS в проекте mvc, а не с локального диска.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.