Вставленный в jQuery тег ActiveX <object />, имеющий другое поведение - PullRequest
2 голосов
/ 22 июля 2011

Производитель плагинов ActiveX IE заявляет, и в моих тестах определенно показалось, что тег <object /> ActiveX забавно преобразуется с помощью jQuery, а не если бы он не был динамически вставлен.

plugin = $('<object ... >... </object>').get(0);
$('#pluginPlaceholder').append(plugin);

Результатом динамического добавления элемента управления является то, что плагин загружается, и некоторые функции работают, но другие части не работают (без сбоев, просто без ответа). (Хотя я полагаю, что специфика отсутствия реакции против сбоя против чего-то еще состоит в том, как они реализовали то, что обрабатывает ошибку, с которой он сталкивается внутри.)

Чтобы обойти это, я не должен использовать jQuery при создании предмета, даже $('#pluginPlaceholder').html('<object id='obj' ... >... </object>'); plugin = document.getElementById('obj');

Но если jQuery его не трогает, он работает правильно:

document.getElementById('pluginPlaceholder').innerHTML = '<object id='obj' ... >... </object>';
plugin = document.getElementById('obj');  // $('#obj').get(0); seems to be valid too

Что может сделать jQuery с тегом, чтобы повлиять на него каким-либо образом?

1 Ответ

2 голосов
/ 04 августа 2011

Это звучит очень похоже на проблему, с которой мы сталкиваемся с FireBreath плагинами в IE.Что происходит, когда jquery создает тег объекта, он создает тег в памяти перед тем, как поместить его в элемент pluginPlaceholder.Проблема заключается в том, что он на самом деле создает там элемент управления activex перед тем, как поместить его в DOM.

Когда IE говорят поместить элемент управления activex в элемент DOM, он вызывает InPlaceDeactivate для элемента управления ActiveX перед перемещением егозатем помещает его в новый элемент и вызывает InPlaceActivate.Многие элементы управления ActiveX не ожидают этого, и иногда некоторые вещи теряются (например, обработчики событий со страницы), когда это происходит.

Решение проблемы состоит в том, чтобы не устанавливать CLSID или TYPE объектадо тех пор, пока вы не добавите его в новое местоположение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...