【问题标题】:load local HTML file when link is clicked in WebView在 WebView 中单击链接时加载本地 HTML 文件
【发布时间】:2011-05-12 00:33:48
【问题描述】:

我有一个加载本地 HTML 文件的 WebView,如下所示:

[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"test1" ofType:@"html"]isDirectory:NO]]];

我想要的是点击 test1 本地 HTML 文件中的链接,然后让 webView 加载 test2 本地 HTML 文件。

我该怎么做?

【问题讨论】:

    标签: iphone html cocoa-touch hyperlink uiwebview


    【解决方案1】:

    不要加载请求,而是使用- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL 方法。

    从本地 HTML 文件创建一个NSString,如下所示:

    NSError *error = nil;
    NSString *html = [[NSString alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"test1" ofType:@"html"] encoding:NSUTF8StringEncoding error:&error];
    

    然后将其加载到 webview 中,如下所示:

    [webview loadHTMLString:html baseURL:[NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"test1" ofType:@"html"]]];
    

    然后在您的 HTML 文件中,当您链接到其他页面时,只需使用它们的文件名,例如 <a href="test2.html">Test 2</a>,它就会在同一个 web 视图中加载该页面而不会出现任何问题。

    【讨论】:

    • 你肯定得到了加载本地 html 文件的正确答案!感谢您的提示:) 我会给你一个 +1
    • 如果我使用您的代码,我会收到以下错误:“不兼容的指针类型将 'NSString *' 发送到类型为 'NSURL *' 的参数”有什么问题?
    • 我的错,我从内存中输入了代码,要么忘记了 baseURL 使用了 NSURL,要么忘记了 pathForResource 没有返回 NSURL。两者之一。现在应该没事了。
    【解决方案2】:

    就像在普通网页中一样。让 test 1 中的链接指向 test2。

    【讨论】:

    • 你能告诉我如何写 链接吗?
    • 我使用上面的答案得到了它。
    • 如果我的回答对你有帮助,为什么这个被标记为接受?您应该将解决问题的答案标记为已接受。
    【解决方案3】:
    - (void)viewDidLoad {
        [super viewDidLoad];
        [webview loadHTMLString:[self htmlString] baseURL:[self baseURL]];
    }
    - (NSURL *)baseURL{
        NSString *htmlpath = [[NSBundle mainBundle] pathForResource:@"webpage" ofType:@"html"];
        return [[[NSURL alloc] initFileURLWithPath:htmlpath] autorelease];
    }
    
    - (NSString *)htmlString{
        NSError *error = nil;
        NSString *html = [[[NSString alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"webpage" ofType:@"html"] 
                                                         encoding:NSUTF8StringEncoding 
                                                            error:&error] autorelease];
        return html;
    }
    

    【讨论】:

      猜你喜欢
      • 2014-01-19
      • 2014-02-28
      • 2022-06-25
      • 2012-02-26
      • 2016-10-29
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 2018-11-08
      相关资源
      最近更新 更多