iOS本地html页面使用锚点定位

最近在为公司一个老项目加一个小功能,功能需求是要在登录界面上,根据登录错误提示码跳转到一个本地错误指引的html页面

首先当然是编辑该html页面增加锚点,也就id=错误码,然后在登录失败后直接路径加上"#错误码"就可以直接跳转到相应的错误码页面。

增加id=300.png

然而我在为原来的路径加上#错误码并不起作用,webview也无法加载这个页面

NSString*path = [[NSBundle mainBundle]  pathForResource:@"help"ofType:@"html"];
[path stringByAppendingString:@"#200"];

把webView的错误打印出来,才知道是路径问题。

NSURL *url = [NSURL fileURLWithPath:[self.urlString copy]];

url打印输出为:file:///Users/.../help.html%23300,“#”会被该方法编码成%23,出现找不到该文件的情况。而加载本地的文件又不适合用URLWithString:方法。
后来转念一想,可以换一种方式,path路径不做错误码的拼接,而在webViewDidFinishLoad:方法中注入调用页面的JS方法:

[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"javascript:window.location.hash=%d",self.errorCode]];

PS:改用URLWithString:方法也可以奏效。
而这两个方法的区别在于:fileURLWithPath是将str转化为文件路径。而URLWithString紧紧是将url2转化成NSURL类型,对于它的内容没有任何的改变,即不会将#编码为%23,所得到的url不同。

  • file:///Users/ey/Library/.../help.html
  • /Users/ey/Library/... /help.html
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 3,734评论 2 7
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,099评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,956评论 25 709
  • 22年12月更新:个人网站关停,如果仍旧对旧教程有兴趣参考 Github 的markdown内容[https://...
    tangyefei阅读 35,266评论 22 257
  • 背景 如今的app都可以使用屏幕左边缘的侧滑手势来返回上一级,我们如何才能在自己的app中实现这种效果,并且方便管...
    QihuaZhou阅读 1,446评论 0 2