UIWebView不加载外部Javascript文件

时间:2010-08-31 05:30:49

标签: javascript html5 uiwebview

我有以下看似无辜的代码(index.html),但它没有加载code.js文件。如果我在HTML页面中复制/粘贴文件的内容,它的效果很好。 index.htmlcode.js文件都在同一目录中。这是代码段。任何帮助都会很棒。

index.html:

<html>
<head>
<script type="text/javascript" src="code.js"></script>
</head> 
<body onload="drawImage()">
  <div><canvas id="canvas" width="320" height="480"></canvas></div> 
</body>
</html>

ViewController.m:

- (void)viewDidLoad {
  [super viewDidLoad];
// load the first webpage
[homePageWebView loadRequest:[NSURLRequest requestWithURL:[NSURLfileURLWithPath:
  [[NSBundle mainBundle] pathForResource:@"index"ofType:@"html"] isDirectory:NO]]];
}

4 个答案:

答案 0 :(得分:60)

我发现Xcode认为需要编译js文件。

在Xcode中打开项目。转到“目标”并查看“编译源”。如果您在该文件夹中看到您的js文件,请将其移至“Copy Bundle Resources”文件夹并从“Compile Sources”文件夹中删除它。

如果iPhone已安装用于测试,请从iPhone中删除该应用。转到Xcode中的Build菜单并清除所有目标。然后重新编译。

立即检查您的HTML文件现在是否真正看到了您的js文件。

琳达

答案 1 :(得分:7)

您需要将html文件读入字符串并在加载时设置baseURL,以便了解相对路径。

NSError* error;
NSString* html = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"] encoding:NSASCIIStringEncoding error:&error];

[webview loadHTMLString:html baseURL:[self getBaseURL]];

- (NSURL*) getBaseURL {
    NSString* path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
    NSRange r = [path rangeOfString:@"/" options:NSBackwardsSearch];
    path = [path substringToIndex:r.location];

    path = [path stringByReplacingOccurrencesOfString:@"/" withString:@"//"];
    path = [path stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
    path = [NSString stringWithFormat:@"file:/%@//",path];
    return  [NSURL URLWithString:path];
}

这样的事情对你有用。

答案 2 :(得分:6)

为了补充Linda的答案,您可以在这里找到文件:

enter image description here

答案 3 :(得分:5)

我也遇到了同样的问题:我在将文件添加到XCode时做了一件简单的事就克服了这个问题我做了一个小改动,如下图所示:

在下图中,一个用于添加HTML,Javascript和CSS等文件,第二个用于一般XCode文件。

for HTML, Javascript and CSS files

For general XCode files