Нужна помощь в поиске ошибки jQuery - PullRequest
1 голос
/ 18 февраля 2010

Я работал над всплывающим окном, которое взаимодействует с window.opener. Я обнаружил конкретную проблему с IE не работает при попытке добавить объект. Я установил демонстрационную страницу здесь .

По сути, демо-версия открывает всплывающее окно с кнопкой. Он предназначен для выделения частей страницы, как я описал в моем предыдущем вопросе .

В демоверсии нажатие на кнопку всплывающего окна добавляет два div к window.opener. Один div добавляется как строка, а второй - как объект. Я получаю сообщение об ошибке в IE при попытке добавить объект. Вот JavaScript:

$(':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.

1 Ответ

3 голосов
/ 18 февраля 2010

Я не думаю, что IE позволит вам добавить элемент, созданный в одном окне, в DOM другого окна. Это действительно требовательно. Аналогичным образом, это иногда приводит в замешательство, если вы передаете сконструированные объекты Javascript из одного окна в другое, особенно если позднее окно создания исчезает.

Попробуйте использовать window.opener.$("<div/>") для создания элемента.

...