window.opener.location.href работает в IE, но не в Chrome или Safari - PullRequest
5 голосов
/ 11 октября 2011

Я исследовал эту проблему, и хотя на различных форумах есть много сообщений об аналогичных проблемах, ни одна из проблем или решений точно не соответствует моей.

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

Родительская страница представляет собой сводку некоторой информации на основе данных, и пользователь нажимает ссылку, чтобы открыть окно (через window.open), чтобы просмотреть более подробные данные. По завершении в дочернем окне появляется ссылка, которая обновляет данные о родительском элементе (частично для обеспечения отображения правильных данных при возврате к родительскому элементу) и закрывает дочерний элемент.

Консоль в Safari сообщает, что «результат« window.opener.location.href »не является функцией». Я попытался использовать выше и 'window.opener.document.location.href' и 'window.opener.window.location.href' (взятые из других решений, предлагаемых в сети), но безуспешно.

Я знаю, что у некоторых людей эта функция работает хорошо, а у других такая проблема. Мне интересно, есть ли какие-либо ответы на эту конкретную ситуацию.

Вот моя функция:

function quicklink(url) {
window.opener.document.location.href(url);
self.close();
}

Это работало с первого дня на IE7,8 и 9, но не работает в Safari (для Windows или iPad) или Chrome.

Есть идеи?

1 Ответ

19 голосов
/ 11 октября 2011

href это свойство, а не метод.Просто назначьте ему URL:

window.opener.document.location.href = url;

Это будет работать и в IE.Там тоже есть свойство, даже если оно позволяет использовать его как метод.

...