2016-03-21 2 views
2

Прошу прощения, если это было задано, но я не смог найти ответа или решения. Я хочу вызвать функцию JavaScript из «UIWebView» и послушать ее быстро. В любом примере, который я нашел, используется «WKWebView». Должен быть простой способ прослушивания функции JavaScript, как показано ниже:Позвоните быстрой функции с помощью javascript, используя UIWebview

// HTML/JS 
<div id ="myDiv" onclick="listenInSwift()">myItem</div> 

Возможно ли это с помощью UIWebView? Спасибо всем!

ответ

9

listenInSwift Реализовать так:

function listenInSwift() { 
    window.location = 'yoururlscheme://somehost?greeting=hello' 
} 

Тогда прислушайтесь к этому URL с этим кодом в вашем UIWebViewDelegate классе:

func webView(_ webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType navigationType: UIWebViewNavigationType) -> Bool { 
    if request.URL.scheme == 'yoururlscheme' { 
     print('Hello JavaScript...') 
    } 
} 

Не забудьте зарегистрировать свой URL Scheme (в данном случае " myurlscheme ') в Xcode.

Чтобы загрузить локальный файл в веб-просмотра, попробуйте следующее:

let baseURL = NSURL.fileURLWithPath(NSBundle.mainBundle().bundlePath); 
let relativePath = "www/\(file)" 
let fileURL = NSURL(string: relativePath, relativeToURL: baseURL); 
let URLRequest = NSURLRequest(URL: fileURL!); 
webView.loadRequest(URLRequest) 
+0

Спасибо, paulvs, будет ли это работать, если схема URL-адресов является локальной? Как получить локальный путь к html-файлу, встроенному в xocde? – user3612986

+0

Схема URL должна быть локальной (для того, чтобы ее создать, [смотрите здесь] (https://dev.twitter.com/cards/mobile/url-schemes)). – paulvs

+0

Что такое «UIWebView» в 'OS X'' Swift'? 'UIKit' недоступен для импорта при кодировании' OS X'. И 'WebKit' не выполняет описанную вами функцию. – dbconfession

0

это работало отлично для меня:

func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool { 
    if request.url?.scheme == "com.example.app" { 
     print("I’m some JavaScript hoho") 
    } 

    return true 
} 

Примечание: Вы должны добавить "com.example.app" или что-то еще в ваших настройках проекта xcode. Перейдите к информации, прокрутите страницу вниз и найдите схему URL. Добавьте туда свою схему. Оставь другой материал так, как есть. Тогда он должен работать нормально.

Смежные вопросы