A. iOS WKWebView載入本地html
1、將html文件夾拖入項目根目錄下,選擇引用(藍色文件夾)
2、獲取index.html所在的路徑
3、webView調用loadFileURL:allowingReadAccessToURL:方法載入
如果需要拼接額外參數,需要手動拼接地址,直接用fileURLWithPath生成的鏈接,會進行編碼
NSString *basePath = [NSString stringWithFormat: @"%@/%@", [[NSBundle mainBundle] bundlePath], @"index.html所在的文件夾"];
NSURL *baseUrl = [NSURL fileURLWithPath: basePath isDirectory: YES];
NSString *filePath = [NSString stringWithFormat: @"file://%@/index.html#/?xxx=%@&sss=%@", basePath, @"xxx", @"sss"];
NSURL *fileUrl = [NSURL URLWithString: filePath];
[_webView loadFileURL: fileUrl allowingReadAccessToURL: baseUrl];
B. iOS WebView載入本地js、css文件
思路:對html進行操作,然後webView loadHtml
將需要的js、css資源導入創建好的bundle下,如上圖
WKWebView *webView = [[WKWebView alloc]initWithFrame:frame]];
這個filePaths 就是需要載入的 js、css文件在本地的路徑,是個數組,因為可能需要載入本地的多個js、css文件, 如果需要載入的js、css文件較多,可以讓後台傳給你對應js、css文件的路徑,注意傳的路徑要跟導入本地的資源路徑一致,否則會載入失敗。
//路徑path
NSArray *pathArray = dict[@"filePath"];
if (pathArray) {
NSError *error;
//獲取網路的HTML
NSString * online_HTML = [NSString stringWithContentsOfURL:[NSURL URLWithString:url] encoding:NSUTF8StringEncoding error:&error];
if(!error) {
//以分割
NSArray * array_HTML = [online_HTML componentsSeparatedByString:@"</head>"];
NSMutableString *header_HTML = [[NSMutableString alloc]initWithString:array_HTML.firstObject];
for (NSString *path in pathArray) {
//注意這里的hightcharts.bundle,更改成你本地的bundle名
NSString *filePath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"hightcharts.bundle/%@",path] ofType:nil];
if ([filePath hasSuffix:@"js"]) {
[header_HTML appendFormat:@"<script src=\"%@\"><\script>",filePath];
}else if ([filePath hasSuffix:@"css"]){
[header_HTML appendFormat:@"<link rel=\"stylesheet\"
[_webView loadHTMLString:header_HTML baseURL:[[NSBundle mainBundle] bundleURL]];
}
}
C. Webview載入本地html罕見bug
一般來說WebView 載入本地html很簡單 如下圖實現就好了
但是很坑的是 html不僅能命名為readme 命名是readme的就無法載入 換一個名稱test就可以 了。真是罕見的bug
D. Android-WebView中載入本地html的方法
Android在webview下載入本地網頁的方式
首先,在src目錄下面新建一個assets目錄,之後新建一個web資源的根目錄,如下圖所示:
這里的Web目 錄名可以任意起,但是必須有這一層,否則可能拿不到資源
之後再webview中載入資源:
webView.loadUrl("file:///android_asset/web/index.html");
//注意一點,目錄名是assets,資源路徑中是asset
E. 如何用webview載入本地網頁
UIWebView載入工程本地網頁與本地圖片
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *filePath = [[NSBundle mainBundle]pathForResource:@"1" ofType:@"html"];
NSString *htmlString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
myWebView = [[UIWebView alloc] initWithFrame:self.view.bounds];
myWebView.delegate = self;
[self.view addSubview:myWebView];
[myWebView loadHTMLString:htmlString baseURL:[NSURL URLWithString:filePath]];
}
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *imagePath = [[NSBundle mainBundle] resourcePath];
imagePath = [imagePath :@"/" withString:@"//"];
imagePath = [imagePath :@" " withString:@"%20"];
NSString * js = [NSString stringWithFormat:@"document.images[0].src='file:/%@//%@'",imagePath,@"icon-04.png"];
[myWebView :js];
NSString *path = [myWebView :@"document.images[0].src"];
NSLog(@"path:%@", path);
}
F. WKWebView載入本地Web項目文件(WKWebView離線載入)及帶參數請求
隨著蘋果爸爸強制推動WKWebView替代UIWebView,各舊項目的替換工作隨之而來,據說在2020年12月31日前未將UIWebView替換成WKWebView的項目將會被下架,而新項目在初次上線審核就會被卡。
G. WKWebView載入本地html
WKWebView載入本地的html,可使用以下方法:
其中,url為你本地的地址。
除此之外,還必須在WKWebView加入以下設置,否則是白頁!
這句是為了解決跨域問題。
H. webbrowser載入本地網頁
直接打本地網頁文件的全路徑 如:c:\1.htm就可以顯示了
I. [Swift]使用WKWebView載入本地HTML文件
我們項目中有的時候會使用HTML寫一些靜態頁面, 然後直接載入顯示到我們的APP中, 之前一直使用的UIWebView來載入, 是這樣的:
如果想使用WKWebView來載入, 好像失敗了:
這樣是載入不了本地的HTML文件的. 下面就來看一下載入本地HTML的方法.
一般我們直接添加到項目中的文件是默認Create groups的, 即: 在我們添加文件到項目中, 例如一個文件夾, 選項是這樣的:
這樣在項目中添加的文件夾是黃色的, 這時我們在載入HTML的不能使用path來載入了, 應該使用URL, 即:
如果還是使用filePath來載入, 也是可以的, 但是將HTML文件添加到資源目錄的時候需要注意: 我們需要選擇Create folder references, 為便於區分, 我同樣是添加了一個文件夾, 然後將HTML文件添加到這個文件下面:
這時候會發現, 文件夾是藍色的, 項目中是這樣的:
將HTML文件放到這個藍色文件夾下面後, 我們就可以在項目中這樣使用WKWebView來載入了:
這里最主要的是需要自己來拼接完整的文件路徑:
上面黃色文件夾Files下的HTML可以使用UIWebView, 使用之前的方式載入, 也可以使用WKWebView以URL的方式來載入; 藍色HTML_Files文件夾下的HTML文件, 可以使用上面的方式用WKWebView以路徑的方式來來載入.