우선 질문을 드리는 이유는
브라우저들이 사용자가 직접 클릭으로 요청한 이동이 아닌경우 팝업허용을 하지 않은 경우 차단을 합니다.
그래서 클릭시 작동되는 함수에서 직접 url 이동을 하려고 하는데요.
기존에 만들어진 것은 클릭함수에서 html을 읽어 거기서 스크립트로 이동 처리 되어있습니다. 검색을 해보고 해도 이건 방법이 없는 것 같아 고쳐야 할 것 같아서요.
function dispPortalpointIndex() {
클릭시 필요한 확인 과정 코드
if($message) Context::set('message',$message);
$this->setTemplateFile('_result');
}
resul.html 의 내용에는
메시지가 있다면 메시지가 출력할 수 있는 코드와
$selected['url'] 로 이동되는 스크립트 가 있습니다.
$selected['url'] 로 이동을 php 함수에서 직접 시도해 보려고 합니다.
단, 저희 사이트 도메인과 일치하지 않는 경우만 새창으로 열어야 합니다.
구체적으로 어떤 용도인지 모르겠습니다만
PHP에서 할 수 있는 것은 Location: 헤더를 전송하여 리다이렉트시키는 것뿐입니다.
현재 창에 여는지 새 창에 여는지는 자바스크립트에서 결정합니다.
물론 PHP를 사용해서 적당한 태그와 자바스크립트가 포함된 HTML을 뿌려줄 수는 있겠지만
HTML 페이지 로딩 직후에 새 창을 열려고 한다면 당연히 팝업차단에 걸리겠지요?
(아마 이게 최신 크롬에서 안 되는 기존 방식일 겁니다.)
웹페이지에서 클릭 → 클릭 확인 PHP 실행 → 타겟 URL을 새 창에 열기
이건 더이상 가망이 없는 방식입니다.
↗ 클릭 확인 PHP 실행 (AJAX)
웹페이지에서 클릭
↘ 타겟 URL을 새 창에 열기
이렇게 최초 화면의 자바스크립트에서 두 가지 작업을 동시에 실행한다면 아마 가능할 겁니다.
아니면
↗ 클릭 확인 PHP 실행 (AJAX) ↘
웹페이지에서 클릭 . . . . . . . . . . . . . . . . . . . . . . . . . 타겟 URL을 새 창에 열기
이렇게 AJAX 결과를 바탕으로 URL을 구성하는 방법도 있을 듯 한데, 잘 될지는 모르겠네요.
(확인을 거치기 전에는 URL이 아예 노출되지 말아야 하는 경우)
어쨌든 새 창을 여는 스크립트는 처음 클릭했던 웹페이지상에 있어야 합니다.