Это хороший код для перенаправления родительского окна на URL вместо всплывающего окна и закрытия всплывающего окна? - PullRequest
0 голосов
/ 03 марта 2011

Это пример кода: 1. во всплывающем окне:

<body onunload='stopThisAndChangeParentInstead()' >

<a href='MY_URL'> Click here </a>

Когда пользователь нажимает «Click here», происходит событие unload, которое меняет URL родительского и закрывает это всплывающее окно.

function stopThisAndChangeParentInstead()
{
    window.opener.top.location.href = "MY_URL";
    window.close();

}

Мои вопросы:

  1. Каковы недостатки использования этого метода?
  2. Есть ли лучшие способы сделать то же самое?
  3. Есть ли способ javascript, чтобы узнать, на какой URL перенаправляется страница? Так что я могу использовать это в функции выгрузки тела вместо упоминания MY_URL, так как я это уже знаю.

Ответы [ 3 ]

3 голосов
/ 03 марта 2011

Я бы предложил использовать атрибут target в ссылке внутри всплывающего окна, чтобы сделать URL-адрес открытым в родительском окне (target="_parent" или target="_top" должно работать), а затем использовать javascript только для закрытия всплывающего окна.по моему мнению, это более чистое решение.

1 голос
/ 03 марта 2011
  1. Все это довольно сомнительный способ создания хорошего пользовательского опыта.
  2. Всегда есть лучшие способы сделать что-то одно: вы можете написать более красивый код или написать более разумное решение той же проблемы. Но в этом вопросе, я думаю, вам следует взглянуть на другой пользовательский интерфейс вместо того, чтобы кодировать тот же опыт другим способом. Поставь пользователя первым! Понятно, что родительское окно будет перенаправлять? Задайте эти вопросы пользователю, который не слишком заинтересован в использовании компьютеров, и результаты могут вас удивить.
  3. Да, вы можете получить URL, выполнив:

.

<a id="myLink" href="http://myurl">
...
function stopThisAndChangeParentInstead()
{
    var url = document.getElementById('myLink').href;
    window.opener.top.location.href = url;
    window.close();
}
1 голос
/ 03 марта 2011

вместо использования события unload, я бы рекомендовал прикреплять событие onclick непосредственно к тегам привязки.с помощью jquery это будет:

$('a').click(function(){
    window.opener.top.location.href = $(this).attr('href');
    window.close();
    return false; 
});

, хотя это несколько, скажем, необычный способ настроить навигацию таким образом, я не вижу никаких проблем, возникающих из-за этого (возможно, кроме путаницы с пользователем)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...