2011-03-03 118 views
0

这是示例代码: 1.在弹出:这是一个很好的代码,将父窗口重定向到一个url而不是弹出窗口并关闭弹出窗口?

<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,因为我已经知道它。
+0

你能否更清楚地解释你试图用这个来实现的目标?你为什么这样做?当你不知道它的目标时,很难想出一个更好的做法。 – 2011-03-03 08:57:07

+0

嗨马丁。对不起,如果我的问题不清楚。我有一个弹出式超链接,单击超链接时,我想将父页面重定向到该网址,并弹出关闭而不是弹出窗口打开该网址。 – DhruvPathak 2011-03-03 09:00:28

回答

3

我建议使用弹出窗口内的链路上的target属性使URL的父窗口(target="_parent"target="_top"应该工作)打开,然后使用JavaScript仅关闭弹出窗口。在我看来,这是一个更清洁的解决方案。

+0

你是对的,当我发布我的答案时没有考虑到这一点。当html层中已经有东西的时候,为什么要在js中模仿这个... – schellmax 2011-03-03 11:32:31

1

而不是使用卸载事件,我建议直接附加一个onclick事件到锚点标记。使用jQuery,这将是:

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

虽然这是一个有点,比如,设立导航这样不寻常的方式,我不能看到这一点(从迷惑用户,也许除外)所产生的

任何问题
1
  1. 整件事情是创造良好用户体验的一个相当可疑的方式。
  2. 总会有更好的方法来做一件事,你可以写出更美丽的代码或者写出更聪明的解决方案来解决同一个问题。但在这个问题上,我认为你应该看看另一种用户体验,而不是用另一种方式编码相同的体验。把用户放在第一位!是否清楚父窗口将重定向?将这些问题提交给不太热衷于使用计算机的用户,结果可能会让您感到惊讶。
  3. 是的,您可以通过获取网址:

<a id="myLink" href="http://myurl"> 
... 
function stopThisAndChangeParentInstead() 
{ 
    var url = document.getElementById('myLink').href; 
    window.opener.top.location.href = url; 
    window.close(); 
} 
相关问题