dre*_*129 4 javascript iphone xcode objective-c ios
我正在编写一个与JS网页协作的函数.我使用UIWebView来包含网页,当我希望网页与我的应用程序通信时,情况变得复杂.
使用该– stringByEvaluatingJavaScriptFromString:方法可以轻松地在UIWebView中调用javascript函数
但是有没有更简单的方法来调用网页中的obj-c函数,使用javascript?我尝试使用UIWebView委托方法,但我认为它太hacky了.
有什么建议?
我想使用委托是您可以在iOS WebView中使用的唯一(一个或两个)方法.但有几个包装可以帮助你轻松.
EasyJSWebView - 这复制了Android中的开发体验.在Android中,您可以简单地使用WebView中的addJavascriptInterface()方法将Javascript桥接到Java.EasyJSWebView提供同步样式和异步样式,用于从Objective-C方法获取返回值.
WebViewJavascriptBridge - 代码看起来有点像套接字编程.您可以在Objective-C中的"server"和Javascript中的"client"之间来回传递数据.
GAJavaScript - 这可以提供更好的DOM操作体验.
看一下所有这些并选择一个符合您需求的产品.
小智 5
是的,它确实感觉hacky并且有点迟钝但你需要使用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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9184 次 |
| 最近记录: |