2016-12-06 4 views
0

Я создаю браузер.Как загрузить файлы из webview в macOS?

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) 
    } 
} 

Интересно, как я могу получить доступ для загрузки кнопки сайта с WebView.

ответ

0

Если пользователь нажмет на ссылку, webView(_:decidePolicyForNavigationAction:request:frame:decisionListener:) будет вызван метод делегирования WebView's WebPolicyDelegate. Вы можете обработать свою загрузку здесь.

Или, если ваш «получить доступ для загрузки кнопки» означает получение кнопочного элемента себя, вы можете выкопать DOMElement дерево:

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

Благодарим за помощь. Мне нужно больше советов, чтобы делать мои работы. Webview of swift не предоставляет бесплатных функций для загрузки и загрузки файлов на любой сайт. Он может только просматривать. Тем не менее, я все еще хочу получить «путь загрузки» или «путь загрузки» с веб-сайта через Webview, нажав на веб-сайт внизу или загрузив снизу. Поэтому я могу загрузить или загрузить файл на сайт. – N4A

+0

Не работает. Интересно, как я могу улучшить его? как использовать расширение WebView { var rootElement: DOMElement { return self.mainFrame.domDocument.documentElement } Есть ли у вас какой-нибудь пример? Спасибо. } – N4A

0

я имел пытаться реализовать этот путь.

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

Чтобы получить ссылку на URL-адрес в веб-виде, щелкнув по нему, webView (_ webView: WebView !, solvePolicyForNavigationAction actionInformation: [AnyHashable: Any] !, request: URLRequest !, frame: WebFrame! ListListener listener: WebPolicyDecisionListener!) Должен быть используемый. Но я не могу запустить его в viewDidLoad(), чтобы активировать функцию. Пожалуйста, дайте мне знать, как это сделать. Спасибо. – N4A