2011-03-03 1 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. 페이지가 리디렉션되는 URL을 알 수있는 자바 스크립트 방법이 있습니까? 그래서 내가 이미 그것을 알고 있기 때문에 내가 body unload 함수에서 그것을 사용할 수 있도록, MY_URL을 언급하는 대신.
+0

이 목표를 달성하기 위해 무엇을 더 자세하게 설명해 주시겠습니까? 왜 그걸하고 있니? 당신이 그것의 목표를 모를 때, 뭔가를하는 더 좋은 방법을 찾는 것은 어렵습니다. –

+0

안녕 마틴. 미안하지만 질문이 명확하지 않은 경우. 하이퍼 링크를 클릭하면 하이퍼 링크가있는 팝업이 표시됩니다. 부모 페이지가 해당 URL로 리디렉션되고 팝업 창이 닫히고 팝업 창이 닫히고 싶습니다. – DhruvPathak

답변

3

나는 부모 창 (target="_parent" 또는 target="_top" 작동한다고)의 URL이 열려하고 만 팝업을 닫는 자바 스크립트를 사용하도록 팝업 내부의 링크에 target 속성을 사용하는 것이 좋습니다 것입니다. 그것은 내 의견으로는 더 깨끗한 해결책입니다.

+0

네 말이 맞아, 내 대답을 게시 할 때 이것에 대해 생각하지 않았다. html 레이어에 이미 뭔가가있는 경우 왜 js에서 이것을 모방하려고합니까? – schellmax

1

언로드 이벤트를 사용하는 대신 onclick 이벤트를 앵커 태그에 직접 연결하는 것이 좋습니다. jQuery를 사용하여이 될 것입니다 :

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

은, 말하자면, 어느 정도 이런 식으로 탐색을 설정하는 특이한 방법하지만, 나는 (아마도 사용자를 혼란 제외)이 발생하는 모든 문제

를 볼 수 없습니다
1
  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(); 
} 
관련 문제