1. 程式人生 > >iOS攔截webView的Alert與Confirm並讓地址不顯示,iOS隱藏(或重寫)webView彈出提示的title,http:xxx.xx

iOS攔截webView的Alert與Confirm並讓地址不顯示,iOS隱藏(或重寫)webView彈出提示的title,http:xxx.xx

實現JS與OC 的互相呼叫,可參考這篇文章 OC與JS互調獲取系統圖片

這裡就不講呼叫的原來了,直接上解決webView中出現的提示title有地址的問題

1.首先新建擴充套件類繼承 JavaScript 名字為 UIWebView+JavaScript 點選next,建立後報錯,.h中把 @interface UIWebView_JavaScript : JavaScript 改成 @interface UIWebView (JavaScript) ;  .m檔案中也需要把@implementation UIWebView_JavaScript 改成 @implementation UIWebView (JavaScript);注意:如果使用了監聽 Confirm則需要為Alert 掛上代理(也就需要匯入代理),這樣方便判斷選擇的是“取消”還是“確定”,或者其他的按鈕。

下面是.h檔案中的內容

//
//  UIWebView+JavaScript.h
//  JS和iOS互動
//
//  Created by user on 16/9/14.
//  Copyright © 2016年 user. All rights reserved.
//
// 這是個擴充套件類
#import <UIKit/UIKit.h>
#import <JavaScriptCore/JavaScriptCore.h>// 引入系統框架

@interface UIWebView (JavaScript) <UIAlertViewDelegate>

@end

2.現在可以實現方法的監聽實現,直接在.m實現檔案中實現

//  UIWebView+JavaScript.m
//  
//
//  Created by user on 16/9/14.
//  Copyright © 2016年 user. All rights reserved.
//

#import "UIWebView+JavaScript.h"

@implementation UIWebView (JavaScript)

-(void)webView:(UIWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(id)frame
{
   NSLog(@"彈出提示++++++");
    UIAlertView* alert = [[UIAlertView alloc]initWithTitle:@"提示:" message:message delegate:nil cancelButtonTitle:@"確定" otherButtonTitles:nil, nil];// 在這裡不用掛上代理 message 是webView裡JS中提示的內容
    [alert show];
}
static BOOL diagStat = NO;
static NSInteger btIndex = -1;// 區別於 alert 消失是的按鈕
- (BOOL)webView:(UIWebView *)webView runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(id)frame
{
    
    UIAlertView *confirmAlert = [[UIAlertView alloc] initWithTitle:@"助手提示"message:message delegate:self cancelButtonTitle:@"取消"otherButtonTitles:@"確定",nil]; // 這裡必須掛上代理 message 是webView裡JS中提示的內容
    [confirmAlert show];
    btIndex = -1;
    
    while (btIndex==-1)
    {
        //[NSThread sleepForTimeInterval:0.2];
        [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1f]];
    }
    if (btIndex == 0)
    {
        //取消;
        diagStat = NO;
    }
    else if (btIndex == 1)
    {
        //確定;
        diagStat = YES;
    }
    return diagStat;
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    btIndex = buttonIndex;
    if (buttonIndex == 0)
    {
        NSLog(@"取消 按鈕");
    }
    else
    {
        NSLog(@"確定  按鈕");
    }
}
@end

使用的時候,在載入webView中匯入該類的標頭檔案即可。特別注意的是,這裡是使用系統的 alertView替換html中的顯示的alert並不是同一個物件,所以獲取Confirm是,需要在上面的 alertViewDelegate中實現 OC呼叫JS的方法。

相關推薦

iOS攔截webView的AlertConfirm地址顯示iOS隱藏(重寫)webView提示title,http:xxx.xx

實現JS與OC 的互相呼叫,可參考這篇文章 OC與JS互調獲取系統圖片 這裡就不講呼叫的原來了,直接上解決webView中出現的提示title有地址的問題 1.首先新建擴充套件類繼承 JavaScr

15行程式碼蘋果裝置崩潰iOS 12也無法倖免

國外安全研究人員 Sabri Haddouche 發現了一個只需幾行程式碼就可以讓 iPhone 崩潰並重啟的方法。 Sabri Haddouche 在 GitHub 上釋出了一個示例網頁,只有 15 行程式碼,如果在 iPhone 或 iPad 上訪問這個頁面,就會崩潰並重啟。在 macOS 上使用 Sa

使用python處理中文csv檔案excel正確顯示中文(避免亂碼)

使用python2處理中文時,經常會出現亂碼問題,之前使用python處理中文csv檔案時,處理過程程式輸出出現了亂碼,最後在程式中能夠正常顯示出中文,但是匯出檔案時,使用excel打開出現了中文亂碼問

TP框架裏面當訪問存在的操作方法時顯示錯誤頁面

操作 pub 不顯示 public 錯誤 ech function 用戶 額外 當訪問空操作方法或者不存在的錯誤的操作方法的時候: 在該控制器頁面裏面寫一個   public function _empty(){     echo "您訪問的頁面有誤";   } 的

vue禁用啟用以及點選提示

一·,     HTML <tr v-for="(item,index) in showData" :key="index"> <td>{{item.developer_id}}</td&

LigerUI 設定選中行顏色改變設定水平滾動條顯示

 .l-grid-body { position: relative; width:100%;     top: 0px;     left: 0px;     overflow: none;

iOS開發-29】解決方案:TabBar的圖片顯示顯示灰色的正方形

(1)現象 tabbar上的圖片變成一塊正方形的灰色塊塊,原先的圖片沒有了。 (2)原因 tabbar上的圖片本質上不是一個圖片,而是一個形狀圖片。系統對我們使用的圖片也只是把其中的形狀“扣”出來,其餘的背景什麼的都不要。因為我們可能給背景加了顏色,所以系統扣的時候只是把

img標籤src引用網路圖片頁面顯示返回403錯誤網路圖片地址在瀏覽器能載入放html卻顯示

在html頁面加入<meta name="referrer" content="no-referrer">標籤,就可以解決頁面載入網路圖片的問題,原因大概是網路安全的問題,別人的頁面做了安全防護的問題。<head> <meta chars

XMLHttpRequest 服務端的互動以及layer子頁面關閉框的總結

$("#btn").click(function(){ //父頁面 layer.open({ type: 2, title: '註冊', area: ['500px', '300px'],

[iOS diary] UIImageView,UILabel等加gesture recognizer成功神祕屬性userInteractionEnabled

某天,我對一個UIImageView addGestureRecognizer怎麼搞都沒有反應。後來,老大告訴我有這個屬性,我enable之發現還是不行,後來才發現我的UIImageView是add到另外一個UIImageView上的,把父層UIImageView enab

【HTML/JS】Img的src指向的圖片存在img顯示出來

http://tuqiang9999.blog.163.com/blog/static/332413201211023431619/ Img的src指向的圖片不存在,讓img不顯示出來   <script type="text/javascript">

如何設定WebView支援js的Alert,Confirm,Prompt函式的提示框.

預設情況下,Android WebView是不支援js的Alert(),Confirm(),Prompt()函式的彈出提示框的.即使設定了setJavaScriptEnabled(true);也是沒用的.那麼,如何才能讓WebView可以支援js的這3個函式呢.可以通過設定

ios app上傳成功但ITunes Connect顯示的解決方法

使用Xcode或Application Loader上傳顯示成功,但是在ITunes Connect正在處理之後就沒了。這個時候不要改build傳了,只需要在info.plist加上對應的隱私描述就行了 從iOS10開始,蘋果更加註重對用於隱私的保護,

IOS提示框(確認/取消)

在移動開發之中,系統彈出提示框是很常見的需求,比如,賬戶密碼輸入不正確的時候,給予客戶提示“輸入不正確,請再次輸入!“; 此文章不做詳細的描述,因為這個東西的話,也很簡單,如果要以其他方式實現,可以去

jquery實現的獲取滑鼠位置提示

       在做Web應用的時候,有時候為了增強使用者體驗,當用戶滑鼠放在某個圖片或者按鈕上時,需要給一些互動性的提示。當然,HTML中已經自帶了這項功能,就是alt=“”,但有時覺得這個看起來不夠美觀,所以就自己用css寫了個彈出框,並用jquery實現了效果,程式碼如

spring cloud feign 服務提供者服務消費者引數名一致會接收

最近sprign cloud專案中遇到了一個坑,和大家分享一下 服務消費者程式碼如下,引數名稱為currentDate, 服務提供者程式碼如下,引數名稱為date, 由於兩個引數名稱不一樣,呼叫過程中,服務提供方始終獲取不到呼叫引數的值,花費了很長時間才找到了這

頁面快取永遠訪問最新的資料

前言:每一次請求,我們都知道瀏覽器會做一定處理,其中就包括對資料的快取處理,相同引數做查詢的處理,就可以讓資料儲存在客戶端,這樣可以減少對伺服器的請求,但是,有時候一些特殊情況查詢,是需要時時刻刻保持最新的,就好像學過sql類似資料髒讀、幻讀之類的情況,我們不需要瀏覽器做快取

IOS 點選tabbaritem跳轉到一個新介面隱藏tabbar

先自定義一個UITabbarController,用於Storyboard中 再在MyTabbarController中實現protocol @interface MyTabbarController : UITabBarController <UITabBar

iOS 8的scrollView上的試圖都顯示(scrollView直接加在帶navigation的self.view上

iOS下,如果我們的self.view 的第一個子試圖直接就是scrollView的話,那麼ScrollVIew的所有子試圖都會下移64個畫素。 self.automaticallyAdjustsScrollViewInsets = NO; self.heade

EventBus進入Activity頁面給Fragment傳值提示

1. 進入頁面先訪問網路狀態.返回true或false表示網路狀態的有無,將這個值使用EventBus傳給Fragment頁面 首先需要匯入依賴 compile 'org.greenrobo