[英]Is it possible to load images into UIWebView with out pointing baseUrl Bundle Url
[英]UIWebView: Link to files in bundle and set a baseURL
我想將一些.js文件包含到HTML文件中,並將其加載到UIWebView
。 這些文件在我的app bundle
。 我也想為webView
設置一個不同的baseURL
。
到目前為止,我正在使用以下內容:
HTML檔案:
... a bunch more html code above
<head>
<script src="%wJQ%" type="text/javascript"></script>
</head>
... a bunch more html code below
加載我的UIWebView
文件:
NSString *jQ = [[[NSBundle mainBundle] URLForResource:@"myjsfile" withExtension:@"js"] absoluteString];
htmlString = [htmlString stringByReplacingOccurrencesOfString:@"%wJQ%" withString:jQ];
這給了我類似的東西:
<script src="file://localhost/Users/webmaster/Library/Application%20Support/iPhone%20Simulator/5.1/Applications/43C9E1C2-C7FD-4FC1-BF6A-844266920CCD/MyApp.app/myjsfile.js" type="text/javascript"></script>
可悲的是,當我查看UIWebView
,似乎沒有加載.js文件。
然后,我想將baseURL
設置為遠程URL,因為我需要一些相對鏈接才能工作:
NSString *webURL = @"http://www.mysite.com";
[self.webView loadHTMLString:htmlString baseURL:[NSURL URLWithString:webURL]];
我如何才能使這兩種技術正常工作?
如果由於必須將基本url設置為其他內容而無法訪問javascript文件,則可以改為注入javascript文件。
注入js的位置將取決於它的作用以及與dom的交互方式。 如果它獨立於dom,則可以將其注入到viewDidLoad中,如果它依賴於dom,則需要將其注入到shouldStartLoadWithRequest或webViewDidFinishLoad中。 像這樣注入它:
NSBundle *bundle = [NSBundle mainBundle];
NSURL *jsURL = [bundle URLForResource:@"JavaScript" withExtension:@"js"];
NSData *jsData = [NSData dataWithContentsOfURL:jsURL];
NSString *jsScriptAsString = [[NSMutableString alloc] initWithData:jsData encoding:NSUTF8StringEncoding];
[self.webView stringByEvaluatingJavaScriptFromString:jsScriptAsString];
將您的js文件更改為此:
var script = document.createElement('script');
script.type = 'text/javascript';
script.text = your stuff
...
document.getElementsByTagName('head')[0].appendChild(script);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.