2

다음과 같은 경우가 있습니다.Javascript set window.name - IE의 문제

웹 사이트 A를 사용하여 웹 사이트 B를 여는 window.open("Website B", "windowName"); 사이트 BI에서

다음 코드를 가지고 웹 사이트 CI에서

<script> 
    window.name=''; 
    window.location.href = 'Website C'; 
</script> 

파이어 폭스 및 크롬 (모든 버전)에있는을 window.name 같음 '이지만 IE (버전 9, 10, 11)에서는 'windowName'과 같습니다.

누군가 설명 할 수 있습니까? 웹 사이트 C에 도착했을 때 항상 window.name = ''이있는 해결 방법이 필요합니다. 웹 사이트 B에서 windows.open을 사용하여 웹 사이트 C를 열 수 없으며 window.location을 사용해야합니다. 부호화

소스 첨가 :

된 index.html (사이트 A)

<!DOCTYPE html> 
<html> 
<title>Page A</title> 
<head> 
<script> 
    function test2(){ 
     window.open("index2.html","Some window name","width=500,height=500"); 
    } 
</script> 
</head> 
<body> 
    <input type="button" onClick="test2();"> 
</body> 
</html> 

index2.html (사이트 B)

<!DOCTYPE html> 
<html> 
<title>Page B</title> 
<head> 
<script> 
    document.write("initial window name: [" + window.name + "]<br/><br/>"); 
    window.name=""; //we set it to empty string 
    document.write("after we set window.name to empty string: [" + window.name + "]"); //all fine in all browsers, shows nothing 
    document.location= 'index3.html'; 
</script> 
</head> 
<body> 
</body> 
</html> 

index3.html (사이트 C)를

<!DOCTYPE html> 
<html> 
<title>Page C</title> 
<head> 
<script> 
    document.write("initial window name: [" + window.name + "]"); //OK in Firefox (shows nothing). Not OK in IE, shows "Some window name" 
</script> 
</head> 
<body> 
</body> 
</html> 
+0

문제를 증명하고 다른 사람이 대안을 제공하도록 요청하는 소스 코드가 추가되었습니다. 다시 열어주세요. –

+0

내 경우에는 비록 이름을 설정하고 있었거나 동 기적이 아닌 별도의 Javascript 호출에서 리디렉션을 호출했지만 (MSIE6을 비롯한 다양한 브라우저를 사용하여) 문제를 재현 할 수 없었습니다 - 후에 setTimeout을 통해 document.location을 변경하면 발생합니다 이름 바꾸기? – symcbean

+0

페이지 C의 IE (모든 버전 9-11)에서 여전히 페이지 B와 같은 것을 추가 한 후 window.name = '일부 창 이름'이 표시됩니다. setTimeout (doRedirect, 10000); 페이지 B 코드에만 액세스 할 수 있으므로 페이지 A와 페이지 C는이를 해결하기 위해 변경할 수 없습니다. –

답변

4

MSDN 자료에 따르면

http://msdn.microsoft.com/en-us/library/ie/ms534187%28v=vs.85%29.aspx

내가 name 속성을 변경하려고하며 IE9에서 잘 작동 :에서 name 속성은 변경 가능

http://jsfiddle.net/Guffa/5cBBy/1/

나는 또한 빈으로 변경하려 문자열, 그 작동 :

http://jsfiddle.net/5cBBy/2/

그래서 코드에 문제가있는 것 같습니다.

+1

실제로 웹 사이트 B에서 window.name = ''을 설정 한 후 경고 (window.name)는 빈 문자열을 표시하지만 어떻게 든 리디렉션 후에 window.name은 원래 값으로 다시 설정됩니다. 따라서 웹 사이트 C에서는 다시 'windowName'과 같습니다. 나는 피할 필요가있다. –

+0

IE, Mozilla에 어떤 문제가 있는지를 보여주는 사이트 a, b 및 c의 소스 코드로 초기 게시물을 업데이트했습니다. 누구나이 동작을 설명하고 해결 방법을 제공 할 수 있습니까? –

0

동일한 문제가 발생하여 새 window.location을 설정 한 후에 창 이름을 변경해야한다는 것을 알았습니다. 그것은 나를 위해 일했다!

+0

이것은 실제로 질문에 대답하지 않습니다. 다른 질문이있는 경우 [질문하기] (http://stackoverflow.com/questions/ask)를 클릭하여 질문 할 수 있습니다. 당신은 [현상금을 추가] (http://stackoverflow.com/help/privileges/set-bounties)하면 충분한 [평판] (http://stackoverflow.com/help/)이 일단이 질문에 더 많은 관심을 끌 수 있습니다. 평판). - [검토 중] (리뷰/저품절 게시물/14281982) – Liam

+0

왜 안 되니? 기존 문제점이 있음을 주석에서 읽을 수 있습니다. window.name은 위치를 변경 한 후 oringinal 이름으로 재설정됩니다. 이 문제는 window.location (또는이 경우 document.location)이 변경된 직후에 window.name 속성을 설정하여 수정할 수 있습니다. 그런 식으로 창은 위치가 변경된 후에도 새 이름을 유지합니다. –

+0

소스 코드를 제공 할 수 있습니까? document.location을 변경하면 리디렉션이 이미 완료된 것입니다. 위치가 우리가 통제 할 수없는 경우 어떻게 이름을 변경할 수 있습니까? –