当前位置:  开发笔记 > 编程语言 > 正文

UIWebView和本地css文件

如何解决《UIWebView和本地css文件》经验,为你挑选了2个好方法。

我想设置一个适用于桌面的网页,以便它可以在iPhone上的UIWebView上显示.我无法访问页面所源自的Web服务器.我想通过以编程方式更改stylesheet元素的href属性来实现此目的.

我跟我做了以下几点IBOutlet UIWebView *webView.

NSString *cssPath = [[NSBundle mainBundle] pathForResource:@"MyStyleSheet" 
                                                    ofType:@"css"];
NSString *js = @"document.getElementsByTagName('link').setAttribute('href','";
NSString *js2 = [js stringByAppendingString:cssPath];
NSString *finalJS = [js2 stringByAppendingString:@"');"];

//check element structure
NSString *res = [webView stringByEvaluatingJavaScriptFromString:finalJS]; 

这不起作用.使用该[webView stringByEvaluatingJavaScriptFromString:]消息并对backgroundColor身体进行更改确实有效 - 完成练习以查看我是否正确使用了呼叫.

我吠叫错了树吗?



1> 小智..:

您可以从本地项目目录加载CSS

NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
[webView loadHTMLString:htmlString baseURL:baseURL];

详细信息请访问以下网站:http: //iphoneincubator.com/blog/windows-views/uiwebview-revisited


css文件由html标头中的声明加载 - 如下所示:``那么你需要设置`baseURL`到可以找到`default.css`文件的目录.

2> Andrew..:

遗憾的是,UIWebView它不提供用于拦截和修改加载资源时发出的请求的API .这意味着您尝试的任何方法在某种程度上都是黑客攻击.

我会尝试的第一种方法是:

UIWebViewDelegate在视图上提供您自己的委托.

当您发现正在发出的CSS请求时,实现-webView:shouldStartLoadWithRequest:navigationType:并返回NO.

视图加载完主资源后,用于-stringByEvaluatingJavaScriptFromString:将JavaScript注入到动态加载/设置要使用的样式表的页面中.

在JavaScript中,我会在文档上创建一个全新的元素/节点,而不是尝试修改现有的元素/节点.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有