iOS:在OC中調用JS腳本


示例一:在webView中調用js腳本進行搜索

1.首先導入JavaScriptCore.framework這個框架

2.創建webView、設置代理、請求手機端百度

#import "ViewController.h"
#import <JavaScriptCore/JavaScriptCore.h>

#define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width
#define SCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height

@interface ViewController ()<UIWebViewDelegate> @property (strong,nonatomic)UIWebView *webView; @property (assign,nonatomic)BOOL isFirstLoadWeb; @end

@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.webView = [[UIWebView alloc]initWithFrame:self.view.bounds]; self.webView.scalesPageToFit = YES; self.webView.backgroundColor = [UIColor clearColor]; self.webView.delegate = self; [self.view addSubview:self.webView]; NSURL *URL = [NSURL URLWithString:@"http://m.baidu.com"]; NSURLRequest *request = [[NSURLRequest alloc]initWithURL:URL]; [self.webView loadRequest:request]; }

3.通過代理方法,在里面調用自定義的JS腳本

-(void)webViewDidFinishLoad:(UIWebView *)webView{ //程序會一直調用該方法,所以判斷若是第一次加載后使用我們自定義的js,此后不再調用JS,否則會出現網頁抖動現象
    if (!_isFirstLoadWeb) { _isFirstLoadWeb = YES; //獲取當前頁面的url
        NSString *url = [webView  stringByEvaluatingJavaScriptFromString:@"document.location.href"]; //獲取頁面的title
        NSString *title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"]; NSLog(@"%@----%@",url,title); //給webView添加一個自定義的JavaScript
        [webView stringByEvaluatingJavaScriptFromString:@"var script = document.createElement('script');"
            "script.type = 'text/javascript';"
            "script.text = \"function myFuncation(){"
            "var field = document.getElementsByName('word')[0];"
            "field.value = '夏先森的博客園';"
            "document.forms[0].submit();"
         "}\";"
         "document.getElementsByTagName('head')[0].appendChild(script);"]; //開始調用自定義的JavaScript
        [webView stringByEvaluatingJavaScriptFromString:@"myFuncation();"]; }else{ return; } } @end

演示截圖如下:

2016-04-18 21:37:24.670 OC調用JS[7568:356964] https://m.baidu.com/----百度一下

  

 

 

示例二:通過滑動條動態改變網頁中字體的大小

1.首先導入JavaScriptCore.framework這個框架

2.創建webView、設置代理、請求手機端百度

#import "ViewController.h"
#import <JavaScriptCore/JavaScriptCore.h>

#define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width
#define SCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height

@interface ViewController ()<UIWebViewDelegate> @property (strong,nonatomic)UIWebView *webView; @property (strong,nonatomic)UIActivityIndicatorView *activityIndicator; @property (strong,nonatomic)UISlider *slider; @end

@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //1.創建slider
    _slider = [[UISlider alloc]initWithFrame:CGRectMake(10, 40, SCREEN_WIDTH-20, 20)]; [_slider addTarget:self action:@selector(SliderChanged) forControlEvents:UIControlEventValueChanged]; _slider.maximumValue = 1000.0f; _slider.minimumValue = 10.0f; _slider.value = 10.0f; [self.view addSubview:_slider]; //2.創建webView
    self.webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 80, SCREEN_WIDTH, SCREEN_HEIGHT-80)]; self.webView.scalesPageToFit = YES; self.webView.backgroundColor = [UIColor clearColor]; self.webView.delegate = self; [self.view addSubview:self.webView]; NSURL *URL = [NSURL URLWithString:@"http://m.baidu.com"]; NSURLRequest *request = [[NSURLRequest alloc]initWithURL:URL]; [self.webView loadRequest:request]; //3.創建活動指示器
    _activityIndicator = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(0, 0, 40, 50)]; _activityIndicator.center = self.view.center; _activityIndicator.backgroundColor = [UIColor grayColor]; _activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge; [self.view addSubview:_activityIndicator]; }

3.滑動滑動條來改變網頁字體大小

-(void)SliderChanged{ NSString *str1 = [NSString stringWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust = '%f%%'",_slider.value]; [_webView stringByEvaluatingJavaScriptFromString:str1]; } @end

演示截圖如下:

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM