WKWebView 和UIWebView隱藏 網(wǎng)頁上內(nèi)容 控件 DIV

網(wǎng)頁圖片
頁面源碼

如上所示

要隱藏切換賬號(hào)這個(gè)按鈕

解決辦法如下圖

解決辦法

[webView evaluateJavaScript:@"document.getElementsByClassName('tcaptcha-iframe')[0].hidden = true;" completionHandler:^(id result, NSError *error) {
NSLog(@"01隱藏web控件 %@ \n\n %@",result,error);
lengthString = result;
}];
(也可以單引號(hào))

(這個(gè)方法缺點(diǎn)是必須等頁面加載完成之后才可以調(diào)用隱藏,頁面會(huì)先顯示出來要隱藏的控件会放,加載完成之后才可以實(shí)施隱藏)

參考: https://www.cnblogs.com/aaalice/p/4222918.html
https://www.cnblogs.com/leonlincq/archive/2019/01/25/10322030.html
https://www.cnblogs.com/beijingxiaoguo/p/4152606.html(里面有更好的解決辦法,頁面內(nèi)容如下)

「前幾天因?yàn)閿?shù)據(jù)中加載有html語言的數(shù)據(jù)捣鲸,關(guān)于html語言和UIWebView媒役,有一些糾結(jié)只锻,經(jīng)過幾天的研究,也有了一些自己的簡單的見解崇裁。

   我有兩個(gè)頁面需要加載html語言(注意匕坯,這里面的html不是從json解析出來的一段html語言,而是整個(gè)網(wǎng)站拔稳,然后用谷歌的開發(fā)者工具可接看到網(wǎng)站的源碼)葛峻,這段html語言顯示的內(nèi)容包括排版還是比較好的,所以我想直接把這個(gè)網(wǎng)站加載到我的程序上壳炎,但是由于是別的的數(shù)據(jù)泞歉,概覽上面有一段我不想要的數(shù)據(jù),滾動(dòng)視圖的詳情頁面有我很多不想要的數(shù)據(jù)匿辩,所以我就想到了把這段不想要的代碼給刪除掉腰耙。所以我想到了兩個(gè)辦法(網(wǎng)頁的源碼我們是無法直接的刪除的),第一個(gè)铲球,我利用UIWebView的js交互的方法挺庞,用dom語言把這一段給隱藏掉(例如: [self.webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName(\"m-app-download\")[0].hidden = true;"];),這段代碼只有在UIWebView請(qǐng)求結(jié)束的時(shí)候使用才比較好稼病,所以在加載的時(shí)候會(huì)先出現(xiàn)你不想要的那一部分选侨,然后請(qǐng)求加載完成了之后(用的loadrequest請(qǐng)求)才會(huì)隱藏掉,所以還是達(dá)不到預(yù)期的效果然走;第二個(gè)辦法援制,把整個(gè)后臺(tái)的數(shù)據(jù)轉(zhuǎn)換成字符串,然后刪除或者修改我不想要的那一部分(例如:1\. NSString * dataString = [NSString stringWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",webUrl]] encoding:NSUTF8StringEncoding error:nil]; 2\. dataString = [dataString stringByReplacingOccurrencesOfString:@"\"m-app-download\"" withString:@"”]; 3. [self.webView loadHTMLString:dataString baseURL:nil];)芍瑞,經(jīng)過這三部晨仑,也能達(dá)到預(yù)期的效果,但是會(huì)存在一個(gè)問題,有點(diǎn)卡洪己,暫時(shí)先不處理這妥凳,最起碼達(dá)到了要求。

    然后我滿懷欣喜的去處理滾動(dòng)視圖上的鏈接答捕,這個(gè)地方要比概覽的網(wǎng)站大的多逝钥,加載的東西也非常多,我就利用第二種方法去處理它拱镐,因?yàn)槲业诙N方法是處理字符串艘款,當(dāng)我看到這個(gè)地方的字符串的時(shí)候,因?yàn)橛蟹浅6嗟孟嗨频牡胤搅≌荆址茈y去處理磷箕,又一次陷入了糾結(jié),所以我想到一個(gè)比較懶的方法阵难,我現(xiàn)在視覺上讓上面的我不想要的隱藏(因?yàn)檫@段字符串處理起來比較的簡單)岳枷,然后下面的我等請(qǐng)求結(jié)束后,在用dom給隱藏掉不就行了呜叫,然后繼續(xù)做空繁,后來成功了。

然后我以為是大功告成了朱庆,可是在測(cè)試的時(shí)候盛泡,我進(jìn)入滾動(dòng)頁面詳情的時(shí)候,非常極其的卡娱颊,后來就思考這是為什么傲诵,然后想到了一個(gè)原因,是不是UIWebView的加載的網(wǎng)站過大箱硕,再加上UIWebView的內(nèi)存不能釋放所造成的层玲,然后我開始想這個(gè)解決辦法勾栗,那不用UIWebView不就行了炎功,然后我就想到了以前看到的一個(gè)第三方類(TFHpple)用來過濾html的標(biāo)簽一膨,來獲取自己想要的那一部分,所以就開始研究TFHpple惠昔,后來才知道過濾標(biāo)簽需要用到XPath語言(一種過濾xml和html的語言)(關(guān)于XPath的一些知識(shí)http://www.ruanyifeng.com/blog/2009/07/xpath_path_expressions.html)幕与,后來經(jīng)過一段時(shí)間的學(xué)習(xí)很快的掌握了這一個(gè)知識(shí)點(diǎn)(例:使用過程:1.導(dǎo)入 #import “TFHpple.h" #import “TFHppleElement.h" #import “XPathQuery.h” 2.添加一個(gè)庫,這個(gè)庫是:libxml2.2.dylib镇防。并且還需要設(shè)置一些路徑參數(shù)啦鸣,否則會(huì)一直報(bào)錯(cuò);這個(gè)路徑的設(shè)置来氧,在 targets中赏陵,在build settings搜索Header Search Paths饼齿,將debug和release設(shè)置不同的值; debug的值設(shè)置成:/usr/include/libxml2 release的值設(shè)置成:${SDKROOT}/usr/include/libxml2 3. 將html語言轉(zhuǎn)換成data蝙搔, NSString *dataString = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://breadtrip.com/mobile/destination/topic/2387718792/"] encoding:NSUTF8StringEncoding error:nil];

NSData *htmlData = [dataString dataUsingEncoding:NSUTF8StringEncoding]; 4.書寫XPath過濾語句: NSString *nodeString = @"http://section//dl";
NSString *nodeString = @"http://p[@class="double-line"]";

NSString * nodeString = @"http://dd[a[@class=\"pic\"]]//img"; //所有的圖片

NSString * nodeString = @"http://div[@class=\"info\"]//p[@class=\"summary\"][1]"; //獲得所有的文字,15段文字

NSString * nodeString = @"http://dd[div[@class=\"info\"]]//a[@class=\"pic\"]//img";

NSString * nodeString = @"http://header//img”;等等 

5.獲得想要的那個(gè)對(duì)象: TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:htmlData];

NSArray *elements = [xpathParser searchWithXPathQuery:nodeString];(注意數(shù)組里面裝得是 TFHppleElement對(duì)象考传, 這樣可以打印出來NSString * string = ele.attributes[@"src”]; NSLog(@"%@",string);))然后接卸終于結(jié)束了吃型,獲得數(shù)據(jù)進(jìn)行簡單的布局,這樣布局的時(shí)候就不會(huì)有UIWebView那么好看的界面了僚楞,很可惜勤晚。

    后來開始加載頁面,本來以為問題已經(jīng)解決掉了泉褐,可是還是非常的卡赐写,這是為什么呢,接著就思考原因然后檢查我的代碼膜赃,這些方法都有( NSString * dataString = [NSString stringWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",webUrl]] encoding:NSUTF8StringEncoding error:nil];)這段代碼挺邀,測(cè)試后這段代碼的耗時(shí)是非常長的,而且這段代碼是在主線程來加載的所以跳座,會(huì)非常的卡端铛,終于找到了原因,所以就果斷的用GCD開辟一條線程去加載數(shù)據(jù)

創(chuàng)建一個(gè)串行異步線程(串行異步能保證效率疲眷,又能控制它在異步線程上的執(zhí)行順序禾蚕,所以用這個(gè)),然后回到主線程更新UI界面(self.hud是加載時(shí)候的蒙版)狂丝,不出所料换淆,果然非常的快了,各種快几颜。后來想既然這樣那么UIWebView應(yīng)該也沒有問題倍试,所以上面的代碼改成了UIWebView去loadHTMLString,發(fā)現(xiàn)依舊非常的快菠剩,而且界面的問題也保證了易猫,果斷欣喜。后來我有進(jìn)行了瘋狂的點(diǎn)擊測(cè)試具壮,發(fā)現(xiàn)沒有問題准颓,而且很快,但是就在點(diǎn)擊了100多次左右棺妓,系統(tǒng)打印了內(nèi)存警告的提示攘已,后來一想,這是對(duì)的怜跑,因?yàn)閁IWebView創(chuàng)建后的內(nèi)存不能夠釋放样勃,就算你退出了也不能釋放吠勘,所以這個(gè)地方,當(dāng)很多次的創(chuàng)建就可能導(dǎo)致內(nèi)存警告(離著閃退還有一段距離)峡眶,所以這個(gè)地方還得用TFHpple解析(很搓的界面是wufa避免了剧防,我還是偷懶先用著UIWebVIew吧)。

   總結(jié):問題需要多方面的qu考慮辫樱,當(dāng)遇到卡頓的時(shí)候峭拘,應(yīng)該首先想到的就是線程的問題,在滿足了功能的要求之后狮暑,應(yīng)該還要站在用戶的角度上去思考問題鸡挠,比如內(nèi)存問題,體驗(yàn)問題等等搬男,這個(gè)地方走了很多的彎路拣展,但是也學(xué)到了很多的知識(shí),所以說是值得的缔逛。慢慢的積跬步然后去致千里备埃。」
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末译株,一起剝皮案震驚了整個(gè)濱河市瓜喇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌歉糜,老刑警劉巖乘寒,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異匪补,居然都是意外死亡伞辛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門夯缺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蚤氏,“玉大人,你說我怎么就攤上這事踊兜「捅酰” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵捏境,是天一觀的道長于游。 經(jīng)常有香客問我,道長垫言,這世上最難降的妖魔是什么贰剥? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮筷频,結(jié)果婚禮上蚌成,老公的妹妹穿的比我還像新娘前痘。我一直安慰自己,他們只是感情好担忧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布芹缔。 她就那樣靜靜地躺著,像睡著了一般涵妥。 火紅的嫁衣襯著肌膚如雪乖菱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天蓬网,我揣著相機(jī)與錄音,去河邊找鬼鹉勒。 笑死帆锋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的禽额。 我是一名探鬼主播锯厢,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼脯倒!你這毒婦竟也來了实辑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤藻丢,失蹤者是張志新(化名)和其女友劉穎剪撬,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體悠反,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡残黑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斋否。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梨水。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖茵臭,靈堂內(nèi)的尸體忽然破棺而出疫诽,到底是詐尸還是另有隱情,我是刑警寧澤旦委,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布奇徒,位于F島的核電站,受9級(jí)特大地震影響社证,放射性物質(zhì)發(fā)生泄漏逼龟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一追葡、第九天 我趴在偏房一處隱蔽的房頂上張望腺律。 院中可真熱鬧奕短,春花似錦、人聲如沸匀钧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽之斯。三九已至日杈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間佑刷,已是汗流浹背莉擒。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瘫絮,地道東北人涨冀。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像麦萤,于是被迫代替她去往敵國和親鹿鳖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

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