Ios UIWebView加载HtmlString在设备上不工作
我有一个webview,我想使用loadHtmlString方法加载它。问题是,我希望能够使用我以前下载的图像更改img src。我还在html中使用google analitics,因此我需要将baseUrl设置为实际url,这样它才能工作。问题来了。如果我将baseUrl放入,图像将不会加载。如果我不设置baseUrl,它就会工作。我怎样才能避免这个问题,这样我就可以使用谷歌Analytics,并在我的应用程序中本地存储图像?我不希望在我的项目中实现google analitics sdk 奇怪的是,如果我在模拟器中运行它,并且没有将“http://”前缀放在我的baseUrl前面,它就可以正常工作。但是,当我在设备上运行它时,我收到以下错误并且它不工作:Ios UIWebView加载HtmlString在设备上不工作,ios,xcode,google-analytics,Ios,Xcode,Google Analytics,我有一个webview,我想使用loadHtmlString方法加载它。问题是,我希望能够使用我以前下载的图像更改img src。我还在html中使用google analitics,因此我需要将baseUrl设置为实际url,这样它才能工作。问题来了。如果我将baseUrl放入,图像将不会加载。如果我不设置baseUrl,它就会工作。我怎样才能避免这个问题,这样我就可以使用谷歌Analytics,并在我的应用程序中本地存储图像?我不希望在我的项目中实现google analitics sdk
Domain=WebKitErrorDomain Code=101 "The URL can’t be shown"
谢谢
编辑
如果我这样做,它会起作用:
[appsWebView loadHTMLString:htmlString baseURL:nil];
但是,为了让Google Analitics正常工作,我必须提供一个baseURL,我还有两个例子:
我错误地认为问题在于本地映像没有完全指定完整路径,但这似乎不是问题所在。但是,您完全正确地发现(有些令人惊讶地)您不能指定一些基于web的
baseURL
,也不能在HTML字符串中引用本地图像。没有简单的解决方案突然出现在我面前,但至少,您可能有几个(不是很好)选项:
首先,您可以使用一些base64库对本地图像进行base64编码,例如:
或在捆绑包中:
NSString *imagePath = [[NSBundle mainBundle] pathForResource:imageName
ofType:nil];
但是,一旦您拥有完全限定的路径,您应该能够使用该路径:
NSURL *imageUrl = [NSURL fileURLWithPath:imagePath];
NSString *imageHtml = [NSString stringWithFormat:@"<img src='%@'>", imageUrl];
NSURL*imageUrl=[NSURL fileURLWithPath:imagePath];
NSString*imageHtml=[NSString stringWithFormat:@',imageUrl];
我敢打赌这是一个外壳问题。考虑到设备区分大小写,而模拟器不区分大小写。检查URL并确保它包含正确的字符。您能将URL和用于加载字符串的代码粘贴到这里吗?我不能共享URL或html。但是,我必须说,如果我只是加载url或html字符串,但使用远程图像,它可以在任何浏览器上工作,也可以在webview中工作。但是,我需要将它们存储在本地。我还可以确认图像已正确存储,并且在将图像url替换为本地url时,它是正确的,并且文件存在于该位置location@AndreiFilip我的错。我已经用几个选项更新了我的答案,其中base64编码似乎最有希望。只有在设置baseUrl时才会出现问题。否则,html将不会出现任何问题。然而,据我所知,baseUrl是谷歌分析工作所必需的。。。我猜当我有一个baseUrl时,它会以某种方式将它附加到html代码中的任何url中。你知道加载webview后是否有办法查看html吗?明白。您可以通过类似于[webView stringByEvaluatingJavaScriptFromString:@“document.documentElement.outerHTML”]的方式获取html代码>但我认为这对您没有帮助,因为在本例中,它只会显示您提供的html。我怀疑您不能同时引用本地文件和远程baseURL
(也许是减少跨服务器脚本攻击的基本机制?)。这就是我建议使用base64编码的原因,因为它将您的图像嵌入到html中,并且不需要使用引用本地文件系统的html标记。
NSString *imagePath = [[NSBundle mainBundle] pathForResource:imageName
ofType:nil];
NSURL *imageUrl = [NSURL fileURLWithPath:imagePath];
NSString *imageHtml = [NSString stringWithFormat:@"<img src='%@'>", imageUrl];