Comment charger le fichier HTML local dans UIWebView

J’essaie de charger un fichier html dans mon UIWebView mais cela ne fonctionnera pas. Voici la scène: j’ai un dossier appelé html_files dans mon projet. Ensuite, j’ai créé un composant WebView dans le générateur d’interface et lui ai assigné une sortie dans le viewController. C’est le code que j’utilise pour append le fichier html:

-(void)viewDidLoad { NSSsortingng *htmlFile = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"html" inDirectory:@"html_files"]; NSData *htmlData = [NSData dataWithContentsOfFile:htmlFile]; [webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithSsortingng:@""]]; [super viewDidLoad]; } 

Cela ne fonctionnera pas et UIWebView est vide. J’apprécierais de l’aide.

Related of "Comment charger le fichier HTML local dans UIWebView"

il est probablement préférable d’utiliser NSSsortingng et de charger le document HTML comme suit:

Objectif c

 NSSsortingng *htmlFile = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"html"]; NSSsortingng* htmlSsortingng = [NSSsortingng ssortingngWithContentsOfFile:htmlFile encoding:NSUTF8SsortingngEncoding error:nil]; [webView loadHTMLSsortingng:htmlSsortingng baseURL: [[NSBundle mainBundle] bundleURL]]; 

Rapide

 let htmlFile = NSBundle.mainBundle().pathForResource("fileName", ofType: "html") let html = try? Ssortingng(contentsOfFile: htmlFile!, encoding: NSUTF8SsortingngEncoding) webView.loadHTMLSsortingng(html!, baseURL: nil) 

Swift 3 a peu de changements:

 let htmlFile = Bundle.main.path(forResource: "intro", ofType: "html") let html = try? Ssortingng(contentsOfFile: htmlFile!, encoding: Ssortingng.Encoding.utf8) webView.loadHTMLSsortingng(html!, baseURL: nil) 

As-tu essayé?

Vérifiez également que la ressource a été trouvée par pathForResource:ofType:inDirectory appel pathForResource:ofType:inDirectory .

EDIT 2016-05-27loadRequest expose “une vulnérabilité universelle de script inter-sites”. Assurez-vous de posséder chaque élément que vous chargez. Si vous chargez un script incorrect, il peut charger tout ce qu’il veut.

Si vous avez besoin de liens relatifs pour travailler en local, utilisez ceci:

 NSURL *url = [[NSBundle mainBundle] URLForResource:@"my" withExtension:@"html"]; [webView loadRequest:[NSURLRequest requestWithURL:url]]; 

Le bundle recherchera tous les sous-répertoires du projet pour trouver my.html . (la structure des répertoires est aplatie au moment de la construction)

Si my.html a la balise , webView chargera https://stackoverflow.com/questions/7063276/how-to-load-local-html-file-into-uiwebview/some.png de votre projet.

par cela vous pouvez charger le fichier HTML qui se trouve dans votre projet Assets (bundle) vers webView.

  UIWebView *web = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)]; [web loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"test" ofType:@"html"]isDirectory:NO]]]; 

C’est peut-être utile pour vous.

Je suppose que vous devez d’abord allocate et webview votre webview ::

 - (void)viewDidLoad { NSSsortingng *htmlFile = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"html" inDirectory:@"html_files"]; NSData *htmlData = [NSData dataWithContentsOfFile:htmlFile]; webView = [[UIWebView alloc] init]; [webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithSsortingng:@""]]; [super viewDidLoad]; } 

Un extrait de code Simple Copy-Paste:

 -(void)LoadLocalHtmlFile:(NSSsortingng *)fileName onWebVu:(UIWebView*)webVu { [webVu loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:fileName ofType:@"html"]isDirectory:NO]]]; } 

Remarque:

Assurez-vous que l’ appartenance à la cible du fichier HTML est vérifiée, sinon une exception sera lancée: –

entrer la description de l'image ici

Application de terminaison en raison d’une exception non interceptée

'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:isDirectory:]: nil ssortingng parameter'

 UIWebView *web=[[UIWebView alloc]initWithFrame:self.view.frame]; //[self.view addSubview:web]; NSSsortingng *filePath=[[NSBundle mainBundle]pathForResource:@"browser_demo" ofType:@"html" inDirectory:nil]; [web loadRequest:[NSURLRequest requestWhttp://stackoverflow.com/review/first-postsithURL:[NSURL fileURLWithPath:filePath]]]; 

Pour Swift 3 et Swift 4:

 let htmlFile = Bundle.main.path(forResource: "name_resource", ofType: "html") let html = try! Ssortingng(contentsOfFile: htmlFile!, encoding: Ssortingng.Encoding.utf8) self.webView.loadHTMLSsortingng(html, baseURL: nil) 

Peut-être que votre fichier HTML ne supporte pas le codage UTF-8, car le même code fonctionne pour moi.

Ou vous pouvez aussi ces lignes de code:

 NSSsortingng *htmlFile = [[NSBundle mainBundle] pathForResource:@"Notes For Apple" ofType:@"htm" inDirectory:nil]; NSSsortingng* htmlSsortingng = [NSSsortingng ssortingngWithContentsOfFile:htmlFile encoding:NSUTF8SsortingngEncoding error:nil]; [WebView loadHTMLSsortingng:htmlSsortingng baseURL:nil]; 

Voici le fonctionnement du fichier HTML avec Jquery.

  _webview=[[UIWebView alloc]initWithFrame:CGRectMake(0, 0, 320, 568)]; [self.view addSubview:_webview]; NSSsortingng *filePath=[[NSBundle mainBundle]pathForResource:@"jquery" ofType:@"html" inDirectory:nil]; NSLog(@"%@",filePath); NSSsortingng *htmlssortingng=[NSSsortingng ssortingngWithContentsOfFile:filePath encoding:NSUTF8SsortingngEncoding error:nil]; [_webview loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:filePath]]]; or [_webview loadHTMLSsortingng:htmlssortingng baseURL:nil]; 

Vous pouvez utiliser les requêtes pour appeler le fichier HTML dans votre UIWebview.

Assurez-vous que “html_files” est un répertoire dans le bundle principal de votre application, et pas seulement un groupe dans Xcode.

Une nouvelle façon de le faire en utilisant swift. UIWebView n’est plus et WKWebView est la nouvelle classe pour charger les pages Web, ce qui garantit les fonctionnalités de Safari à la vue Web.

  import WebKit let preferences = WKPreferences() preferences.javaScriptCanOpenWindowsAutomatically = false let configuration = WKWebViewConfiguration() configuration.preferences = preferences let webView = WKWebView(frame: self.view.bounds, configuration: configuration) let request = NSURLRequest(URL: NSURL(ssortingng: "http://nshipster.com")) webView.loadRequest(request) 
 Swift iOS: // get server url from the plist directory var htmlFile = NSBundle.mainBundle().pathForResource("animation_bg", ofType: "html")! var htmlSsortingng = NSSsortingng(contentsOfFile: htmlFile, encoding: NSUTF8SsortingngEncoding, error: nil) self.webView.loadHTMLSsortingng(htmlSsortingng, baseURL: nil) 
 [[NSBundle mainBundle] pathForResource:@"marqueeMusic" ofType:@"html"]; 

Il est peut-être tard, mais si le fichier de pathForResource est nil vous devez l’append dans les Build Phases > Copy Bundle Resources de pathForResource Build Phases > Copy Bundle Resources .

entrer la description de l'image ici

Voici Swift 3:

  if let htmlFile = Bundle.main.path(forResource: "aa", ofType: "html"){ do{ let htmlSsortingng = try NSSsortingng(contentsOfFile: htmlFile, encoding:Ssortingng.Encoding.utf8.rawValue ) messageWebView.loadHTMLSsortingng(htmlSsortingng as Ssortingng, baseURL: nil) } catch _ { } } 
 if let htmlFile = NSBundle.mainBundle().pathForResource("aa", ofType: "html"){ do{ let htmlSsortingng = try NSSsortingng(contentsOfFile: htmlFile, encoding:NSUTF8SsortingngEncoding ) webView.loadHTMLSsortingng(htmlSsortingng as Ssortingng, baseURL: nil) } catch _ { } } 

Dans Swift 2.0, la réponse de @ user478681 pourrait ressembler à ceci:

  let HTMLDocumentPath = NSBundle.mainBundle().pathForResource("index", ofType: "html") let HTMLSsortingng: NSSsortingng? do { HTMLSsortingng = try NSSsortingng(contentsOfFile: HTMLDocumentPath!, encoding: NSUTF8SsortingngEncoding) } catch { HTMLSsortingng = nil } myWebView.loadHTMLSsortingng(HTMLSsortingng as! Ssortingng, baseURL: nil) 

Mettez tous les fichiers (HTML et ressources) dans un répertoire (pour mon “manuel”). Ensuite, faites glisser le répertoire vers XCode, sur “Fichiers de support”. Vous devez cocher les options “Copier les éléments si nécessaire” et “Créer des références de dossier”. Ensuite, écrivez un code simple:

 NSURL *url = [[NSBundle mainBundle] URLForResource:@"manual/index" withExtension:@"html"]; [myWebView loadRequest:[NSURLRequest requestWithURL:url]]; 

Attention à @"manual/index" , le manuel est le nom de mon répertoire !! C’est tout !!!! Désolé pour mon mauvais anglais…

================================================== =====================

Hola desde Costa Rica. Ponga los archivos (html y demás recursos) dans un directorio (dans le manuel de la machine), le journal, le répertoire et la liste XCode, sobre “Supporting Files”. Uteed debe seleccionar las opciones “Copier les éléments si nécessaire” y “Créer des références de dossier”.

 NSURL *url = [[NSBundle mainBundle] URLForResource:@"manual/index" withExtension:@"html"]; [myWebView loadRequest:[NSURLRequest requestWithURL:url]]; 

Presta atención a @"manual/index" , manuel sur le nombre de directeurs !!