a.html
<form name="form1" method="post" action="">
<a href="javascript:void(null)" class="add" onClick="open('b.html','','resizing=1,scrollbars=1,status=no,toolbar=no,menu= no,width=500,height=400,left=150,top=50')">늘리기</a>
<입력 유형="텍스트" 이름="텍스트1">
</form>
b.html
<스크립트 언어="자바스크립트" 유형="텍스트/자바스크립트">
함수 반환값()
{
window.opener.document.all.text1.value=document.getElementById("returnText").value;
window.close();
}
</script>
<input type="button" name="제출" value="제출" onclick="returnValue();">
<input name="returnText" type="text" id="returnText">
</p>
보충: window.opener 사용법
일반적인 사용법에서 window.opener는 창을 닫을 때 팝업 창이 표시되지 않는 문제를 해결하는 데에만 사용되며 일반적으로 더 깊은 이해에 대한 이해가 부족합니다. 실제로 window.opener는 window.open 메서드를 호출하는 창을 의미합니다.
주로 직장에서 부분 제출을 해결하는 데 사용됩니다. 이런 종류의 페이지 간 작업은 작업에 매우 도움이 됩니다.
메인 창에서 페이지를 열고 메인 창을 새로 고치고 싶다면 이것을 사용하세요. 페이지를 여는 window.opener는 메인 창의 창과 동일합니다.
기본 창을 새로 고치려면 다음을 사용할 수 있습니다.
window.opener.location.reload();
가상 디렉터리를 사용하는 경우: struts *.do와 같은 경우 다시 시도하라는 메시지가 표시됩니다. 이를 window.opener.yourformname.submit()으로 변경할 수 있습니다.
괜찮을 거야
2〉
신청하는 상황이 있는데,
창 A에서 창 B를 열고, 창 B에서 작업을 완료한 후 창 B를 닫고, 동시에 창 A를 자동으로 새로 고칩니다.
함수 closeWin(){
hasClosed = 사실;
window.opener.location="javascript:reloadPage();";
window.close();
}
함수 window.onbeforeunload(){
if(!hasClosed){
window.opener.location="javascript:reloadPage();";
}
}
</script>
위의 코드는 창 B를 닫을 때 개체가 누락되었다는 오류 메시지를 표시합니다. 올바른 코드는 다음과 같습니다.
함수 closeWin(){
hasClosed = 사실;
window.opener.location="javascript:reloadPage();";
window.opener=null;
window.close();
}
함수 window.onbeforeunload(){
if(!hasClosed){//closeWin 메소드가 실행된 경우 이 메소드는 실행되지 않습니다.
window.opener.location="javascript:reloadPage();";
}
}
</script>
reloadPage 메서드는 다음과 같습니다.
함수 reloadPage() {
역사.go(0);
document.execCommand("새로고침")
document.location = 문서.location;
document.location.reload();
}
추신: 이벤트를 캡처하려면 창의 정상적인 닫기와 강제 닫기를 지원해야 하므로 전역 변수 hasClosed를 사용합니다.
==============================================
또한 상위 창이 프레임인 경우 상위 창을 새로 고칠 때 문제가 발생할 수 있습니다.
정보를 다시 보내지 않으면 페이지를 새로 고칠 수 없습니다.
나중에 다음과 같이 수정되었습니다.
window.opener.parent.document.frames.item('mainFrame').location.href = window.opener.location.href;
내장된 reload() 메서드를 실행할 필요는 없습니다. 다음 문장을 불필요하게 추가하지 않도록 주의하세요.
window.opener.parent.document.frames.item('mainFrame').location.reload();
================================================= ======================================
마지막으로 일반 부모 창과 프레임 부모 창을 동시에 새로 고칠 수 있도록 지원하기 위해 코드는 다음과 같습니다.
함수 closeWin() {
hasClosed = 사실;
<%if(null != 프레임){%>
window.opener.parent.document.frames.item('mainFrame').location.href = window.opener.location.href;
<%}그 외{%>
window.opener.location = "javascript:reloadPage();";
<%}%>
//window.opener.top.mainFrame.location="javascript:reloadPage();";
//self.opener.frames.mainFrame.location.reload(true);
윈도우.오프너 = null;
window.close();
}
함수 window.onbeforeunload(){
if (!hasClosed) {
<%if(null != 프레임){%>
window.opener.parent.document.frames.item('mainFrame').location.href = window.opener.location.href;
<%}그 외{%>
window.opener.location = "javascript:reloadPage();";
<%}%>
윈도우.오프너 = null;
}
}
window.opener 사용법
window.opener는 현재 창을 생성한 창에 대한 참조를 반환합니다. 예를 들어 a.htm의 링크를 클릭하여 b.htm을 열면 b.htm에 값을 입력하고 이를 a에 할당할 계획입니다. htm.id가 "name"인 텍스트 상자에는 다음과 같이 작성할 수 있습니다.
window.opener.document.getElementById("name").value = "데이터 입력";
javascript의 window.opener에 대해 잘 이해하지 못합니다.
프레임에서 사용할 수 없는 이유는 무엇입니까? 팝업 창의 상위 창이 프레임 내부의 페이지에 있을 수 없는 이유는 무엇입니까? 그렇다면 팝업창을 통해 프레임 안의 부모창을 어떻게 동작시킬 수 있을까요?
opener.parent.frames['frameName'].document.all.input1.value 이것을 시도해 보세요 :)
프레임의 페이지를 같은 프레임의 다른 페이지나 상위 프레임의 페이지로 변경하려면 parent를 사용하세요.
window.opener는 window.open으로 열린 페이지의 상위 페이지를 나타냅니다.
window.frames 개체는 iframe의 페이지나 프레임세트의 페이지를 참조할 수 있습니다.
이것은 할 수 있습니다
window.frames[0].document.getElementById('xx');
이것은 할 수 있습니다
window.frames[0].document.body.innerHTML;
frm = window.parent.window.frames['uploadFrame'];
frmDocument = frm.document;
frm.sb(3); //sb는 uploadFrame 페이지의 함수입니다.
파이어폭스의 경우
오류가 발생하는 경우: parent.document.frames에 PRperties가 없습니다.
다음 코드로 바꾸면 됩니다. 이 코드는 IE 및 ff와 호환됩니다. frm = window.parent.window.frames['uploadFrame']; 실제로 프레임 컬렉션은 문서에 있지 않고 window 개체 아래에 있습니다.
이러한 방식으로 프레임의 페이지를 수정하는 데에는 제한이 있습니다. 즉, 동일한 도메인에 있어야 합니다. 그렇지 않으면 동일한 도메인에 있지만 하위 도메인 이름이 다른 경우에는 액세스할 수 없습니다. 관련된 js 및 html 파일에 대한 문장입니다.
document.domain = xxx.com [여기에 도메인 이름을 입력하세요]
document.getElementById('iframeid').contentWindow.document.getElementById('someelementid');
묻다:
상위 창 window.open()에서 하위 창. 변수 i를 정의합니다.
하위 창에 j 값을 입력한 다음 window.opener.i=j;
이는 전달될 수 있습니다. 그런데 하위 창 끝에 window.close();를 추가했는데 값을 전달할 수 없습니다.
이 문제를 해결할 수 있는 방법이 있는지 알려주세요. 하위 창을 닫기 전에 값을 전달하겠습니다.
코드는 다음과 같습니다:
상위 창: parent.jsp
<스크립트>
var i;
window.open('<%=contextPath%>/usermanage/newscontrol/cd.jsp);
</script>
<input type="button" onclick="alert(i)">
하위 창:cd.jsp
<스크립트>
함수 서브(){
window.opener.i=5;
window.close();
}
</script>
<입력 유형="버튼" onclick="subm()">
가장 좋은 답변은 상위 창에 넣을 수 있습니다.
<input id="fromChild" type="hidden" />
<입력 유형="버튼"
onclick="alert(document.getElementById('fromChild').value)">
하위 창에서:
함수 서브(){
window.opener.document.getElementById('fromChild').value=5;
window.close();
}
이것은 할 수 있습니다
<머리>
<스크립트 언어=자바스크립트>
함수 windowclose()
{ window.opener=null;
window.close();
}
</script>
</head>
<본문>
<input id="Button1" type="button" value="button" onclick="windowclose()" />
</body>
-