본문 바로가기
iOS/swift

webView - 새 창

by 패쓰킴 2025. 11. 12.
728x90

preferences.javaScriptCanOpenWindowsAutomatically

JavaScript 코드에서 window.open() 같은 함수를 호출했을 때 Swift에서 자동으로 새 창을 열 것인지의 여부를 결정.

기본적으로 false로 설정이 되어 있다.

true 로 설정이 되어도 실제 새 창이 열리게 하려면 WKUIDelegate 의 webView(_:createWebViewWith:for:windowFeatures:) 메서드를 구현해야 한다.

 

webView(_:createWebViewWith:for:windowFeatures:)

새 창을 열려고 시도할 때 호출되는 델리게이트 메서드

새 창을 열기 위해 이 메서드를 구현하지 않거나 nil 을 반환하면 새 창 열기 요청은 무시되고 차단된다.

새 창 허용시, 현재 웹뷰가 아닌 새 창을 열기위한 새로운 웹뷰가 필요하다.

func webView(_ webView: WKWebView, 
             createWebViewWith configuration: WKWebViewConfiguration, 
             for navigationAction: WKNavigationAction,
             windowFeatures: WKWindowFeatures) -> WKWebView? {
 
    let newWebView = WKWebView(frame: self.view.bounds,
                               configuration: configuration)

    // 모달로 띄우기
    present(newViewController, animated: true)
    // 화면 전체를 덮응 새 페이지로 네비게이션 스택에 push 하여 띄우기
    navigationController?.pushViewController(newViewController, animated: true)

    return newWebView
    
}

 

WKNavigationAction -> 

새 창을 열게 된 사용자 상호작용에 대한 정보(URL, 요청 타입 등)를 담고 있다.

WKWindowFeatures ->

JavaScript의 window.open() 함수에서 지정된 새 창의 크기, 위치 등 특성에 대한 정보

728x90

'iOS > swift' 카테고리의 다른 글

webView - 파일 로드  (0) 2025.11.27
webView - 쿠키  (0) 2025.11.14
디버그, 릴리즈 용 사용 값 구분하기  (1) 2024.07.08
숫자 다루기  (0) 2023.11.07
attributedString  (0) 2022.12.26

댓글