Programing

Google 크롬 "window.open"해결 방법?

crosscheck 2020. 12. 9. 07:51
반응형

Google 크롬 "window.open"해결 방법?


나는 웹 앱을 작업 중이며 일부를 위해 새 창을 열어야합니다. 모든 브라우저에서이 작업을 수행하고 있으며 내 고집 포인트는 Google 크롬입니다.

Chrome은 문제를 일으키는 창 기능을 무시하는 것 같습니다. 제가 어려움을 겪고있는 것은 새 창에서 주소 표시 줄을 편집 할 수 있어야한다는 것입니다. FF, IE, Safari 및 Opera는이 작업을 잘 수행하지만 Chrome은 그렇지 않습니다.

내 코드 :

function popitup(url) {
  newwindow=window.open(url, 'name', 'toolbar=1,scrollbars=1,location=1,statusbar=0,menubar=1,resizable=1,width=800,height=600');
  if (window.focus) {
    newwindow.focus()
  }
  return false;
}

다른 답변은 구식입니다. Chrome for의 동작 window.open은 호출 된 위치 따라 다릅니다. 이 항목을 참조하십시오 .

window.open사용자 작업 (예 : onclick 이벤트)을 통해 트리거 된 핸들러에서를 호출 하면 <a target="_blank">기본적으로 새 탭에서 열리는와 유사하게 작동합니다 . 그러나를 window.open다른 곳에서 호출하면 Chrome은 다른 인수를 무시하고 항상 수정할 수없는 주소 표시 줄이있는 새 창을 엽니 다.

이것은 근거가 완전히 명확하지는 않지만 일종의 보안 조치처럼 보입니다.


이것은 나를 위해 일했습니다.

newwindow = window.open(url, "_blank", "resizable=yes, scrollbars=yes, titlebar=yes, width=800, height=900, top=10, left=10");

location=1부분은 편집 가능한 위치 표시 줄을 사용하도록 설정해야합니다.

참고로, language="javascript"이제 더 이상 사용되지 않는 속성을 스크립트에서 삭제할 수 있습니다 .

업데이트 :

statusbar=1올바른 매개 변수로 설정하면 status=1나에게 적합합니다.


Google 크롬이 탭 대신 새 창에서 열리려면 메뉴 표시 줄이 없어야합니다.


현재 탭 모드에서 크롬을 새 창으로 열도록하는 자바 스크립트 방법이 없다고 생각합니다. 기본적으로 탭으로 표시되는 팝업 에 티켓이 제출되었습니다 . 그러나 사용자는 왼쪽 상단의 크롬 아이콘을 클릭하고 "탭으로 표시"를 선택할 수 있습니다. 그러면 주소 표시 줄이 편집 가능해집니다.

자바 스크립트 에서 비슷한 질문이 탭이 아닌 새 창에서 열립니다 .


내가 알 수있는 한, localhost를 참조하는 경우 (예 : 로컬에서 사이트를 개발하고 있음) 크롬이 제대로 작동하지 않습니다.

이것은 작동합니다 :

var windowObjectReference;
var strWindowFeatures = "menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes";

function openRequestedPopup() {
  windowObjectReference = window.open("http://www.cnn.com/", "CNN_WindowName", strWindowFeatures);
}

이것은 작동하지 않습니다

var windowObjectReference;
var strWindowFeatures = "menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes";

function openRequestedPopup() {
  windowObjectReference = window.open("http://localhost/webappFolder/MapViewer.do", "CNN_WindowName", strWindowFeatures);
}

http : //localhost/webappFolder/Landing.do 에서로드 할 때도 작동하지 않습니다 .

var windowObjectReference;
var strWindowFeatures = "menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes";

function openRequestedPopup() {
  windowObjectReference = window.open("/webappFolder/MapViewer.do", "CNN_WindowName", strWindowFeatures);
}

window.open ( "", "NAME", ....)을 사용할 때 대상 창에 이름을 입력하지 마십시오.

그렇게하면 한 번만 열 수 있습니다. 대신 _blank 등을 사용하십시오.


나는 같은 문제가 있는데, Chrome은 코드에서 새 창을 열지 않습니다 (처리기가 아님).
이 해결책을 찾았습니다.

setTimeout(function () {
    window.open(
        url, 'name', 'toolbar=1, scrollbars=1, location=1,
        statusbar=0, menubar=1, resizable=1, width=800, height=600'
    );
}, 1);

참고 URL : https://stackoverflow.com/questions/2572333/google-chrome-window-open-workaround

반응형