黑马程序员------杂记(二)

来源:互联网 发布:hap编码软件 编辑:程序博客网 时间:2024/05/21 09:12

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


UIWebView控件执行js代码 


UIWebView还可以通过 stringByEvaluatingJavaScriptFromString 函数来执行 javascript代码,从而可以更加灵活地处理网页文件
  1. 获得UIWebView的标题
NSString *theTitle=[webView stringByEvaluatingJavaScriptFromString:@"document.title"];
  2. 获取页面的URL
NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];
  3. 修改页面元素的值
NSString *js_result = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('q')[0].value='who are you';"];
  4. 表单提交
NSString *js_result2 = [webView stringByEvaluatingJavaScriptFromString:@"document.forms[0].submit(); "]
 
四、综合运用以上方法,还可以实现部分网页的显示,基本思路如下:
    1. 用 loadRequest 先获取网页,但先设置 UIWebView.hidden = YES;
    2. 在 webViewDidFinishLoad 中,用
NSString *js_result2 = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementByIdx_xx_x_x('xxxx').innerHTML; "] 获取指定标签元素的HTML代码
    3. 再使用 loadHTMLString 加载该HTML代码,即可




获取当前网络状态


因为Reachability类只支持获取以下三种类型

typedef enum : NSInteger {    NotReachable = 0,    ReachableViaWiFi,    ReachableViaWWAN,} NetworkStatus;



因为移动网络只获取到ReachableViaWWAN,如果,我们想要具体获取到是2G,3G,4G的网络状态就必须重写networkStatusForFlags这个方法,代码如下:


typedef enum : NSInteger {    NotReachable = 0,    ReachableViaWiFi,    ReachableViaWWAN,    ReachableVia4G,    ReachableVia3G,    ReachableVia2G} NetworkStatus;if (flags & kSCNetworkReachabilityFlagsIsWWAN) {        if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {            CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init];            NSString *currentRadioAccessTechnology = info.currentRadioAccessTechnology;            if (currentRadioAccessTechnology) {                if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE]) {                    return ReachableVia4G;                } else if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyEdge] || [currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyGPRS]) {                    return ReachableVia2G;                } else {                    return ReachableVia3G;                }            }        }               if ((flags & kSCNetworkReachabilityFlagsTransientConnection) == kSCNetworkReachabilityFlagsTransientConnection) {            if((flags & kSCNetworkReachabilityFlagsConnectionRequired) == kSCNetworkReachabilityFlagsConnectionRequired) {                return ReachableVia2G;            }            return ReachableVia3G;        }        return ReachableViaWWAN;    }



0 0