2016-12-06 3 views
0

브라우저를 만들고 있습니다.MacOS에서 webview에서 파일을 다운로드하는 방법은 무엇입니까?

webview에는 mainframeURL 및 accessibilityURL과 같은 기능 목록이 있습니다.

나는이 작업을 수행하여 업데이트 링크를 얻는 방법을 알아 내기 :

@IBOutlet weak var webview: WebView! 

func webViewDidFinishLoad(_ webView : WebView) { 
    let url = self.webview.mainFrameURL 

    if url == nil { 
     print("http://google.com/") 
    } 
    else { 
     print(url) 
    } 
} 

은 내가 웹보기에서 웹 사이트의 버튼을 다운로드에 대한 액세스를 얻을 수있는 방법 궁금합니다.

답변

0

링크를 클릭하면 webView(_:decidePolicyForNavigationAction:request:frame:decisionListener:) WebView의 WebPolicyDelegate 대리자 메서드가 호출됩니다. 여기에서 다운로드를 처리 할 수 ​​있습니다. 나는이 방법을 구현하기 위해 노력했다

extension WebView { 
    var rootElement: DOMElement { 
     return self.mainFrame.domDocument.documentElement 
    } 
} 
+0

도움 주셔서 감사합니다. 나는 내 일을하기위한 더 많은 조언이 필요하다. swift의 Webview는 무료 웹 사이트에 파일을 다운로드하고 업로드 할 수있는 기능을 제공하지 않습니다. 그것은 오직 브라우징 만 할 수 있습니다. 그러나, 나는 아래쪽 웹 사이트 또는 업로드 하단을 클릭하여 Webview를 통해 웹 사이트에서 "다운로드 경로"또는 "업로드 경로"를 얻고 싶습니다. 따라서 웹 사이트에 파일을 다운로드하거나 업로드 할 수 있습니다. – N4A

+0

작동하지 않습니다. 나는 그것을 어떻게 향상시킬 수 있을까? 확장 WebView 사용 방법 { var rootElement : DOMElement { return self.mainFrame.domDocument.documentElement } 예제가 있습니까? 고맙습니다. } – N4A

0

:

아니면 "버튼을 다운로드받을 액세스"버튼 요소 자체를 점점 의미하는 경우

, 당신은 DOMElement 트리를 발굴 할 수 있습니다.

func webView(_ webView: WebView!, 
         decidePolicyForNavigationAction actionInformation: [AnyHashable : Any]!, 
         request: URLRequest!, 
         frame: WebFrame!, 
         decisionListener listener: WebPolicyDecisionListener!){ 
    webView.stringByEvaluatingJavaScript(from: "document.getElementById('Download').click()") 
    llet url = request.url!.absoluteString 
    // I need to get the url link 
    print(url) 
     } 
override func viewDidLoad() { 
    super.viewDidLoad() 
    /// how can I implement the function to make it work ? 
    self.webView(NSwebView, decidePolicyForNavigationAction: nil, request: nil, frame: nil, decisionListener: nil) 
} 
+0

WebView에서 URL 링크를 가져 오려면 webView (_ webView : WebView!, decidePolicyForNavigationAction actionInformation : [AnyHashable : Any] !, 요청 : URLRequest !, 프레임 : WebFrame! decisionListener 리스너 : WebPolicyDecisionListener!)가 있어야합니다. 익숙한. 하지만 viewDidLoad() 함수를 활성화하려면 실행할 수 없습니다. 제게 어떻게하는지 알려주세요. 고맙습니다. – N4A

관련 문제