Клуб API Карт

Полупрозрачность Circle в IE8 с использованием JSONP

Пост в архиве.

Всем добрый день. Я не JS разработчик, и не особый знаток yandex api.  Но вот при использовании выявил вот такую интересную штуку. Мне просто интересно, а почему?

Если добавить срипт на страницу в котором, вызывать функцию которая будет рисовать круг на карте, то могут появиться проблему с полупрозрачностью в IE8.

 

Вот примерный код. 

 JSONP ("http://****&callback=", function(data) { добавить круг при помощи  new ymaps.Circle и yaMap.geoObjects.add

 

var JSONP = function(uri, callback) {

     function Response() {

                callback.apply(this, arguments);

                doc.removeChild(script); // вот из-за вызова этого метода круг становится непрозрачным. //Если эту строчку удалить, или поменять на setTimeout(function()      {doc.removeChild(script);}, 0); то круг будет правильным с полупрозрачностью,                 Почему?

}

 

var doc = document.documentElement;

var script = document.createElement("script");

 

var src = "_JSONP__";

window[ src ] = Response;

 

doc.insertBefore(

                script,

                doc.lastChild

                ).src = uri + src ;

};


Спасибо.

 

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

Я сейчас подумал, и что  неправильно удалять, элемент скрипта, в котором ты сейчас находишься... Возможно в жтом случае у ie случается exception где-нибудь внутри, и он перестает рендерить полупрозрачную картинку...

Sergey Konstantinov
28 января 2016, 02:49
Это действительно так - тэги нужно удалять через таймаут, причем не только в IE, а во всех браузерах.

 

Я не JS разработчик, и не особый знаток yandex api.

Используйте АПИ для работы с JSONP (jQuery.Ajax,

или его шорткат $.getScript)

и не надо самому создавать/удалять тэг script и прочих велосипедов.

Все грабли разработчики того же jQuery уже собрали и Вам предоставлен кроссброузерный интерфейс.

Я не могу юзать Jquery. Т.к. не могу ничего за собой такскать.

Так. Я ошибся. Не знаю почему. Но вобщем удаление срипта здесь нипричем. Тут действительно есть проблема с рендерингом из срипта.

И еще поведение с jquery идентичное. В процентах так 70% круг непрозрачный.