Нужна помощь в отслеживании ошибки jQuery
-
21-09-2019 - |
Вопрос
Я работал над всплывающим окном, которое взаимодействует с window.opener
.Я обнаружил конкретную проблему: IE не работает при попытке добавить объект.Я установил демо-страница здесь.
По сути, демо-версия открывает всплывающее окно с кнопкой.Он предназначен для выделения частей страницы, как я описал в своей статье. предыдущий вопрос.
В демо-версии нажатие кнопки всплывающего окна добавляет два элемента div к window.opener
.Один div
добавляется как строка, а второй добавляется как объект.Я получаю сообщение об ошибке в IE при попытке добавить объект.Вот яваскрипт:
$(':button').click(function(){
$('#clicked').empty().show().html('Click detected!').fadeOut();
var str = '<div class="highlight" style="position:absolute;height:50px;width:50px;left:150px;top:100px;background:#fc0;zIndex:99;">str</div>';
var obj = $('<div/>', {
'class': 'highlight',
css: {
position: 'absolute',
height: '50px',
width: '50px',
left: '100px',
top: '100px',
background: '#08f',
zIndex: 99
}
}).html('obj');
try { $(window.opener.document.body).append(obj); } catch(err) { alert(err.description) };
$(window.opener.document.body).append(str);
})
Итак, я прошу помощи в отслеживании проблемы с jQuery.
Решение
Я не думаю, что IE позволит вам добавить элемент, созданный в одном окне, в DOM другого окна.Он действительно требователен к этому.Точно так же иногда это пугает, если вы передаете созданные объекты Javascript из одного окна в другое, особенно если окно создания позже закрывается.
Попробуйте использовать window.opener.$("<div/>")
для создания своего элемента.