Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.09.2014(UTC) Сообщений: 123  Сказал «Спасибо»: 5 раз Поблагодарили: 2 раз в 2 постах
|
Добрый день! Хочу поделиться найденным недочетом в вашем cadesplugin_api.js Проблема в функции Код:
function isChromiumBased()
{
var retVal_chrome = navigator.userAgent.match(/chrome/i);
var retVal_opera = navigator.userAgent.match(/opr/i);
if(retVal_chrome==null) // В Firefox работаем через NPAPI
return false;
else
{
if((retVal_chrome.length>0) && (retVal_opera==null)) // В Chrome работаем через асинхронную версию
{
return true;
}
if((retVal_opera!=null) && (retVal_opera.length>0)) // В Opera работаем через NPAPI
{
return false;
}
}
}
Дело в том, что в некоторых версиях IE8 с подключенным плагином chromeframe он определяется как Код:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; chromeframe/29.0.1547.67; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)
Поэтому мы попадаем на вот этот if Код:if((retVal_chrome.length>0) && (retVal_opera==null)) // В Chrome работаем через асинхронную версию
Хотя, это IE8!! Для решения проблемы нужно дополнить скрипт примерно так: Код:
function isChromiumBased() {
var retVal_chrome = navigator.userAgent.match(/chrome/i);
var retVal_chromeframe = navigator.userAgent.match(/chromeframe/i);
var retVal_opera = navigator.userAgent.match(/opr/i);
if (retVal_chrome == null) // В Firefox работаем через NPAPI
return false;
else {
if (retVal_chrome.length > 0 && (retVal_chromeframe ==null || retVal_chromeframe.length==0) && (retVal_opera == null)) // В Chrome работаем через асинхронную версию
{
return true;
}
if ((retVal_opera != null) && (retVal_opera.length > 0)) // В Opera работаем через NPAPI
{
return false;
}
}
}
и все заработает как надо. Поправьте, пожалуйста:)
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
Исправим. Спасибо за сообщение! |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.09.2014(UTC) Сообщений: 123  Сказал «Спасибо»: 5 раз Поблагодарили: 2 раз в 2 постах
|
Продолжаю бороться с IE8. У одного из клиентов обнаружилась опять проблема с cadesplugin_api.js Дело в том, что следующая функция Код:
function load_npapi_plugin() {
var elem = document.createElement('object');
elem.setAttribute("id", "cadesplugin_object");
elem.setAttribute("type", "application/x-cades");
elem.setAttribute("style", "visibility=hidden");
document.getElementsByTagName("body")[0].appendChild(elem);
pluginObject = document.getElementById("cadesplugin_object");
if (isIE()) {
var elem1 = document.createElement('object');
elem1.setAttribute("id", "certEnrollClassFactory");
elem1.setAttribute("classid", "clsid:884e2049-217d-11da-b2a4-000e7bbb2b09");
elem1.setAttribute("style", "visibility=hidden");
document.getElementsByTagName("body")[0].appendChild(elem1);
}
падала на 13 строке с ошибкой "не поддерживается интерфейс"... Честно говоря я не совсем понял в чем проблема, суть описана, к примеру тут https://tamentis.com/doc/no_such_interface/Но решение предложенное там не работает. Я попробовал просто взять этот код в try - catch с пустым блоком catch. И, вуаля, как ни странно, сработало - скрипт перестал падать и элемент по ходу добавляется... Если вы подскажете, в чем суть и как это исправить нормально, а не костыльно, то буду очень рад. Проблема возникает в IE 8.0.7601.17514 на Windows 7 sp1 navigator.userAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; MRSPUTNIK 2, 4, 1, 100; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)" Отредактировано пользователем 21 января 2016 г. 13:34:43(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close