ios---JavaScript與iOS原生交互

第一種:UIWebView與js交互

1溯饵、初始化
    self.webView2 = [[UIWebView alloc] initWithFrame:self.view.frame];
    _webView2.delegate = self;
        NSURLRequest *url = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://112.124.54.19/Score/cet.html"]];
    [self.webView2 loadRequest:url];
    [self.view addSubview:self.webView2];
    self.whiteView.hidden = NO;//一個白色的View主要是遮蓋未修改的html界面


2知残、實現(xiàn)代理方法
-(void)webViewDidFinishLoad:(UIWebView *)webView{
    //刪除圖片
    NSString * p = @"var  p = document.getElementsByClassName('pic');";
    NSString * r = @"p[0].remove();";
    NSString * java = [NSString stringWithFormat:@"%@%@",p,r];
    //替換文字
    NSString * text_p = @"var  p = document.getElementsByClassName('tips-hold');";
    NSString * text_r = @"p[0].innerHTML='XXX四六級英語查詢';";
    NSString * text_java = [NSString stringWithFormat:@"%@%@",text_p,text_r];
    //修改按鈕顏色
    NSString * btn_p = @"var p = document.getElementById('submit-btn');";
    NSString * btn_r = @"p.style.backgroundColor='#4CA4FE';";
    NSString * btn_java = [NSString stringWithFormat:@"%@%@",btn_p,btn_r];
    JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
    [context evaluateScript:java];
    [context evaluateScript:text_java];
    [context evaluateScript:btn_java]腔召;
    self.whiteView.hidden = YES;
}

第二種:WKWebView與js交互

1篷朵、初始化
    WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.frame];
    webView.allowsBackForwardNavigationGestures = YES;
    NSURLRequest *url = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://112.124.54.19/Score/cet.html"]];
    [webView loadRequest:url];
    webView.navigationDelegate = self;
    [self.view addSubview:webView];
    self.webView = webView;

2杰扫、實現(xiàn)代理方法

-(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{
    
    //刪除圖片
    NSString * p = @"var  p = document.getElementsByClassName('pic');";
    NSString * r = @"p[0].remove();";
    NSString * java = [NSString stringWithFormat:@"%@%@",p,r];
    
    //替換文字
    NSString * text_p = @"var  p = document.getElementsByClassName('tips-hold');";
    NSString * text_r = @"p[0].innerHTML='XXX四六級英語查詢';";
    NSString * text_java = [NSString stringWithFormat:@"%@%@",text_p,text_r];
    
    //修改按鈕顏色
    NSString * btn_p = @"var p = document.getElementById('submit-btn');";
    NSString * btn_r = @"p.style.backgroundColor='#4CA4FE';";
    NSString * btn_java = [NSString stringWithFormat:@"%@%@",btn_p,btn_r];
   
    [webView evaluateJavaScript:java completionHandler:nil];
    [webView evaluateJavaScript:text_java completionHandler:nil];
    [webView evaluateJavaScript:btn_java completionHandler:nil];
    self.whiteView.hidden = YES;
}

另外補充:顯示加載進度條


-(UIProgressView *)progressView{
    if (!_progressView) {
        _progressView = [[UIProgressView alloc] initWithFrame:CGRectMake(0, 64, self.view.frame.size.width, 2)];
        _progressView.progressTintColor = [UIColor redColor];
        [self.view addSubview:_progressView];
    }
    return _progressView;
}


1刀诬、監(jiān)聽屬性
 //添加監(jiān)聽
    [self.webView addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew context:nil];

2究抓、監(jiān)聽屬性變化執(zhí)行
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{
    if ([keyPath isEqualToString:@"estimatedProgress"]) {
        self.progressView.progress = self.webView.estimatedProgress;
        //加載完成
        if (self.webView.estimatedProgress >=1.0) {
            [UIView animateWithDuration:0.25 animations:^{
                self.progressView.alpha = 0.0f;
                self.progressView.progress = 0.0f;
            }];
        }else{
            self.progressView.alpha = 1.0f;
        }
    }
}

查看效果:
修改前:


Paste_Image.png

修改后:

Paste_Image.png

適用方向:
可以除掉一些html界面的廣告蜘欲,或者自定義html中的的某些視圖益眉,在下修為尚淺,文章僅限學(xué)習(xí)或參考姥份,若有幫助到您郭脂,前點擊喜歡或收藏,謝謝澈歉!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末展鸡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子闷祥,更是在濱河造成了極大的恐慌娱颊,老刑警劉巖傲诵,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異箱硕,居然都是意外死亡拴竹,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門剧罩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來栓拜,“玉大人,你說我怎么就攤上這事惠昔∧挥耄” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵镇防,是天一觀的道長啦鸣。 經(jīng)常有香客問我,道長来氧,這世上最難降的妖魔是什么诫给? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮啦扬,結(jié)果婚禮上中狂,老公的妹妹穿的比我還像新娘。我一直安慰自己扑毡,他們只是感情好胃榕,可當(dāng)我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瞄摊,像睡著了一般勋又。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上泉褐,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天赐写,我揣著相機與錄音,去河邊找鬼膜赃。 笑死挺邀,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的跳座。 我是一名探鬼主播端铛,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼疲眷!你這毒婦竟也來了禾蚕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤狂丝,失蹤者是張志新(化名)和其女友劉穎换淆,沒想到半個月后哗总,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡倍试,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年讯屈,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片县习。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡涮母,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出躁愿,到底是詐尸還是另有隱情叛本,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布彤钟,位于F島的核電站来候,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏逸雹。R本人自食惡果不足惜吠勘,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望峡眶。 院中可真熱鬧,春花似錦植锉、人聲如沸辫樱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狮暑。三九已至,卻和暖如春辉饱,著一層夾襖步出監(jiān)牢的瞬間搬男,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工彭沼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留缔逛,地道東北人。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓姓惑,卻偏偏與公主長得像褐奴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子于毙,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容