>  기사  >  웹 프론트엔드  >  window.open()은 매개변수_javascript 기술을 전달한 후 구현합니다.

window.open()은 매개변수_javascript 기술을 전달한 후 구현합니다.

WBOY
WBOY원래의
2016-05-16 16:10:081682검색

실제 프로젝트에서는 하위 시스템 페이지 사이를 이동하여 새 페이지에서 열어야 하는 경우가 종종 있습니다. 우리 프로젝트 팀은 SSH 프레임워크를 사용하므로 URL은 **** .action과 유사하며 두 가지도 있습니다. 매개변수(시스템 ID 및 시스템 이름) 두 개의 매개변수는 strut에 의해 가로채어 세션에 저장됩니다. 열린 하위 시스템 페이지에는 매개변수 시스템 ID가 필요한 트리 메뉴도 있습니다. , window.open(url, "_blank")을 직접 사용하면 URL 길이가 너무 길어지고 일부 매개변수가 노출됩니다. 따라서 제출 과정에서 매개변수 전송을 숨기고 게시 방법을 사용하여 제출하고 싶습니다. 우선 ajax submit을 생각하는데, 두 매개변수를 전달하는 과정에서 문제가 생기고 Ajax submit과 window.open()을 하면 Action이 두 번 거치게 되므로 폐기된다. 그러다가 window.open() API, 링크 주소 http://www.w3school.com.cn/jsref/met_win_open.asp를 자세히 살펴봤습니다. window.open()은 기본적으로 get submit 메소드를 사용합니다. post submit 메소드를 구현하려면 다른 방법을 생각해야 합니다. http://www.jb51.net/article/32826.htm을 참고하세요. 방법은 이렇습니다. 흔히 사용하는 방법이기도 합니다. 실제 상황에 맞춰 살짝 수정했습니다:

코드 복사 코드는 다음과 같습니다.

함수 openPostWindow(url, 이름, 데이터1, 데이터2){
var tempForm = document.createElement("form");
tempForm.id = "tempForm1";
tempForm.method = "게시물";
tempForm.action = url;
tempForm.target=이름;
var hideInput1 = document.createElement("input");
​ hideInput1.type = "숨김";
​ hideInput1.name="xtid";
hideInput1.value = data1;
var hideInput2 = document.createElement("input");
​ hideInput2.type = "숨김";
​ hideInput2.name="xtmc";
hideInput2.value = data2;
tempForm.appendChild(hideInput1);
tempForm.appendChild(hideInput2);
If(문서.모두){
>  }그밖에{
          var subObj = tempForm.addEventListener("submit",function(){},false);         //firefox
}
​ document.body.appendChild(tempForm);
If(문서.모두){
         tempForm.fireEvent("onsubmit");
}그밖에{
         tempForm.dispatchEvent(new Event("submit"));
}
tempForm.submit();
Document.body.removeChild(tempForm);
}
//함수 openWindow(이름){
// window.open("",이름);
//}

openPostWindow() 함수의 매개변수 수는 실제 필요에 따라 수정될 수 있습니다. data1 및 data2는 작업에 전달되어야 하는 매개변수입니다. 또한 여기서는 Javascript 이벤트 브라우저 호환성 문제를 고려해야 합니다. 여기서는 openWindow() 함수에 주석을 달았습니다. 그렇지 않으면 추가 빈 페이지(about:blank)가 열립니다. 이것은 기본적으로 요구 사항을 충족합니다.

위 내용은 이 글에 공유된 내용입니다. 모두 마음에 드셨으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.