UIWebView中显示js代码写的提示框带域名问题

问题描述:项目中有个界面是内嵌的,用UIWebView完成内嵌,里面有个提交按钮控件,点击之后如果有不符合条件的会弹出个提示框,但是这个提示框是js那边写的,在这边显示出来会自带一个域名,这样不太好看,为了解决这个问题,我逛了很多网站,国内的博客有讲解的,而且都是标注的是原创,但是代码都是一模一样的,太搞笑了,好多的有人评论博主自己都不知道怎么回答,最关键的是根本不能用(至少我看到好多说不能用的),他们写法如下:
  1. @interface UIWebView (JavaScriptAlert)   
  2.   
  3. - (void)webView:(UIWebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame;  
  4.   
  5. @end  
  6.   
  7. @implementation UIWebView (JavaScriptAlert)  
  8.   
  9. - (void)webView:(UIWebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame {  
  10.       
  11.       
  12.     UIAlertView* customAlert = [[UIAlertView alloc] initWithTitle:@"提示信息" message:message delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil];  
  13.       
  14.     [customAlert show];  
  15.       
  16. }  
这个我根本不能用,里面的WebFrame根本没有。我在stack overflow上看到了上述代码一模一样,所以这些代码怎么来的我一下就清楚了。希望写原创的博主认真点,原创其实并不是复制人家的东西然后自己ctrl+v就算自己的了。

下面看看怎么解决这个问题吧,直接上代码,我这个也是在那个网站上看到了:
在web view的代理方法里面写

-(void)webViewDidFinishLoad:(UIWebView *)webView

{

//获取js写的界面的title

    NSString *title = [_webVIew stringByEvaluatingJavaScriptFromString:@“document.title"];

//导航栏上显示获取的titile

    lable.text = title;

 

/*解决webview上内嵌的页面中弹出来的alert有域名问题!*/ PS:这个才是这篇博客的关键

//1、获取js的执行环境

    JSContext *ctx = [webView valueForKeyPath:@“documentView.webView.mainFrame.javaScriptContext"];


//2、js那边写的提示框的函数入口,这里差不多有点重写那个函数的意思。JSValue *message参数可以获取到js中的提示信息,OC中需要转换为string显示出来,好了完成了。

        ctx[@"window"][@"alert"] = ^(JSValue *message) {

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:[message toString] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];

            [alert show];

        };


    

}



这样就可以了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

moxi_wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值