2014-02-17 3 views
2

Я сделал новое окно, используя window.open();, и я хочу его закрыть. Поэтому я сделал этот код.window.open & close несколько раз

$('#open').on('click', function() { 
    var win = window.open("", "", "width=400, height=200"); 
    $newWindow = $(win.document.body); 
    // more code 
    $newWindow.find('#close').on('click', function() { 
     win.close(); // just works once 
    }); 
}); 

И это хорошо работает в FF, работает только один раз в Chrome (Закрыть кнопка перестает работать), и не работает на IE11 (только испытания v11) ...

Что я делаю неправильно? т.е. как исправить это, чтобы работать с перекрестным браузером?

jsFiddle

+0

Похоже, есть ошибка регистрируется в консоли IE11: «Исключение брошено и не поймал» – Igor

ответ

1

Проблема с этой линии:

$newWindow.html(content); 

Вам нужно клонировать элемент, прежде чем добавить его в новом окне. В противном случае вы удаляете исходный элемент и перемещаете его в новое место.

$newWindow.html(content.clone()); 

Обновлено скрипку: http://jsfiddle.net/XL7LR/10/

+0

Ага, хороший момент. Это исправляет Chrome. Любая идея, почему IE все еще «не работает»? Там я даже не вижу кнопку «закрыть» – Rikard

+0

Я не думаю, что 'win.document.body' работает в IE. –

+0

Спасибо за указание основной проблемы! Теперь мне просто нужно знать __ [как заставить его работать в IE] (http://stackoverflow.com/questions/21840660/reach-content-of-new-window-open) __ – Rikard

Смежные вопросы