Да, вы можете сделать это с помощью разработанных методов url и UIWebViewDelegate.
Во-первых, чтобы добавить слушателя событий на кнопку теге, вы должны выполнить JavaScript, как показано ниже (после загрузки страницы)
// In the UIWebViewDelegate
- (void)webViewDidFinishLoad:(UIWebView *)webView {
if (/* when the loaded url is the target */) {
NSString *js = @"document.getElementById('button').click = function() { window.location = 'my-protocol://dummmy.com/maybe/some/data';}";
[webView stringByEvaluatingJavaScriptFromString: js];
}
}
Мы связать события нажатия на кнопку, и, когда она нажата, она будет вызвать запрос в webView.
И следующее, что мы должны сделать, это перехватить запрос и сделать то, что вы хотите в ObjC.
// In the UIWebViewDelegate
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if (/* when the url of the request is the crafted url */) {
// call your objc method...
}
}
Отличное объяснение, спасибо! И BTW, что такое «window.location»? Похож на корень DOM, не так ли? Могу ли я напрямую манипулировать DOM с помощью «window.location»? –
вы можете напрямую манипулировать DOM с помощью переменной «js», переданной в метод «stringByEvaluatingJavaScriptFromString». Например, удалите содержимое страницы: «document.write (''); –