window.open () возвращает неопределенное значение или ноль при втором вызове - PullRequest
4 голосов
/ 06 июня 2009

У меня следующий сценарий:

Я нажимаю на ссылку, которая: открывает всплывающее окно с именем «popup», которое загружает в него PDF-файл (в IE6).

не закрывая всплывающее окно, я снова щелкаю ссылку, которая должна открыть PDF-файл внутри всплывающего окна, но вместо этого выдается ошибка javascript: участник не найден

функция javascript, используемая для открытия всплывающего окна:

function openWindow(url, name, props) {
  var windowRef = window.open(url, name, props);
  if (!windowRef.opener) {
    windowRef.opener = self;
  }
  windowRef.focus(); //error at this line, windowRef must be null
  return windowRef;
}

Вопрос: как мне обойти это, не открывая каждый раз новое всплывающее окно?

Ответы [ 2 ]

7 голосов
/ 11 июня 2009

это хак, который работает, который используют все в интернете:

function openWindow(url, name, props) {
  if(/*@cc_on!@*/false){ //do this only in IE
    var windowRef = window.open("", name, props);
    windowRef.close();
  }
  var windowRef = window.open(url, name, props);
  if (!windowRef.opener) {
    windowRef.opener = self;
  }
  windowRef.focus();
  return windowRef;
}
4 голосов
/ 06 июня 2009

попробуйте использовать глобальный var windowRef вне функции openWindow (). Примерно так:

var WindowRef = null;

function openWindow(url, name, props) {
  if(WindowRef == null){
    WindowRef = window.open(url, name, props)
  }
  else{
    WindowRef.document.location = url
  }
  if (!WindowRef.opener) {
    WindowRef.opener = self;
  }
  WindowRef.focus();
  return WindowRef;
}
...