繁体   English   中英

这是将父窗口重定向到URL而不是弹出窗口并关闭弹出窗口的好代码吗?

[英]Is this a good code to redirect parent window to a url instead of the popup and close the popup?

这是示例代码:1.在弹出窗口中:

<body onunload='stopThisAndChangeParentInstead()' >

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

当用户单击“单击此处”时,将触发卸载事件,该事件将更改父级的URL并关闭此弹出窗口。

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

}

我的问题:

  1. 使用此方法的缺点是什么?
  2. 有没有更好的方法来做同样的事情?
  3. 有没有一种JavaScript方法可以知道页面将重定向到哪个URL? 这样我就可以在body卸载函数中使用它,而不是因为我已经知道MY_URL。

我建议在弹出窗口内部的链接上使用target属性,以使该网址在父窗口中打开( target="_parent"target="_top"应该起作用),然后仅使用JavaScript关闭弹出窗口。 我认为这是一种更清洁的解决方案。

除了建议使用unload事件外,我建议直接将onclick事件附加到锚标记。 使用jQuery,这将是:

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

尽管这是一种以这种方式设置导航的不寻常方式,但我看不到由此引起的任何问题(除了使用户感到困惑之外)

  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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM