用ios上用webview加载了一个本地的HTML文件,代码如下
//load test.html 到 webview
NSString *resourcePath = [[NSBundle mainBundle] resourcePath];
NSString *filePath =[resourcePath stringByAppendingPathComponent:@"test.html"];
NSString*htmlstring=[[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
[myWebView loadHTMLString:htmlstring baseURL:[NSURL fileURLWithPath:[ [NSBundle mainBundle] bundlePath]]];
test.html 内容如下
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<a href="3dker://api/jsToNative?params=21321&callback=show">jsToNative</a><br>
<a href="3dker://api/nativeToJs?params=21321&callback=show">nativeToJs</a>
<h1>JS 调用 Native</h1>
<p>This is a paragraph.</p>
<button onclick="fn()">调用Native变色</button>
<button onclick="fn1()">去下一个webview页面</button>
<p></p>
<button onclick="fn2()">去下一个Native页面</button>
</body>
<script type="text/javascript">
var fn=function(){
window.location.href = "shining3dker://api/getData?params=bianse&callback=show";
}
var fn1=function(){
window.location.href = "shining3dker://goto/forward?url=3dker.cn&type=webview¶m=321321321";
}
var fn2=function(){
window.location.href = "shining3dker://goto/forward?url=3dker.cn&type=native¶m=12321321321";
}
</script>
<script>
var show = function(json){
alert(json);
}
</script>
</html>
然后我做了一个消息中心的监听,监听scheme的变化,在监听方法内我写到
//接受消息中心信息
-(void)get:(NSNotification *)notification{
NSDictionary *dic = notification.object;
//此处有个判断,就是说判断一下让testlabel变色而已
[testlabel setBackgroundColor:[UIColor blueColor]];
//webview调用js 的 show方法弹出alert
[myWebView stringByEvaluatingJavaScriptFromString:@"show(\"调用变色方法成功(native调用js alert)\");"];
}
问题是,Alert能正常弹出,但是不能点击ok让它关闭
我即便是输入
[myWebView stringByEvaluatingJavaScriptFromString:@"alert()"];
输出的alert也是不能点击的。
但是如果把JS alert的代码放在webViewDidFinishLoad内就是正常好用的。难道在消息中心处理完响应后不可以弹出js 的alert吗?我觉得很奇怪,求指教
如图