iOS:在UIWebview中使用javascript调用obj-c方法
我正在编写一个与JS网页协作的函数。我使用UIWebView来包含网页,当我希望网页与我的应用程序通信时,情况变得复杂 通过使用iOS:在UIWebview中使用javascript调用obj-c方法,javascript,iphone,ios,objective-c,xcode,Javascript,Iphone,Ios,Objective C,Xcode,我正在编写一个与JS网页协作的函数。我使用UIWebView来包含网页,当我希望网页与我的应用程序通信时,情况变得复杂 通过使用–stringByEvaluatingJavaScriptFromString:方法,在UIWebView中调用javascript函数很容易 但是有没有更简单的方法可以使用javascript在网页中调用obj-c函数呢?我尝试使用UIWebView委托方法,但我认为它太粗糙了 有什么建议吗?是的,它确实让人感觉不舒服,而且有点滞后,但您需要使用UIWebViewDe
–stringByEvaluatingJavaScriptFromString:
方法,在UIWebView中调用javascript函数很容易
但是有没有更简单的方法可以使用javascript在网页中调用obj-c函数呢?我尝试使用UIWebView委托方法,但我认为它太粗糙了
有什么建议吗?是的,它确实让人感觉不舒服,而且有点滞后,但您需要使用UIWebViewDelegate
function init()
{
$('input').on('click', function(e) { answerBoxShouldBeginEditing(e); });
}
function answerBoxShouldBeginEditing(e)
{
var object = e.toElement;
var answer = $(object).attr('name');
var request = 'engine:' + answer;
var iframe = document.createElement('IFRAME');
iframe.setAttribute('src', request);
document.documentElement.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
iframe = null;
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *requestString = [[request URL] absoluteString];
if ([requestString hasPrefix:@"engine:"]) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hello" message:nil delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
return NO;
}
return YES;
}
我想在iOS WebView中,使用委派是唯一(一种或两种)可以使用的方法。但是有几种包装可以帮助你轻松解决问题
请查看所有这些选项,并选择一个适合您需要的选项。如果您正在考虑升级到WKWebView,这可能是最好的解决方案。太好了!另一种方法-发出XHR请求。这两种方法都是在“cordova/exec”模块(js部分)中实现的,在使用iframe时我遇到了这个问题,请看我的问题啊,这是我一直在寻找的。我知道目前还没有其他方法可以实现这一点,但包装器绝对是有帮助的。谢谢EasyJSWebView真是太棒了!它正是你需要的东西。为Dukeland的兄弟们干杯。谢谢!