您的位置:首页 > 职场人生

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

2015-02-10 20:46 176 查看
------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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: