UIWebView не загружает внешний файл Javascript
У меня есть следующий невинный код (index.html), но он не загружает файл code.js
. Он хорошо работает, если я скопирую/вставляю содержимое файла на страницу HTML. Оба файла index.html
и code.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]]];
}
Ответы
Ответ 1
Я обнаружил, что Xcode считает, что файл js необходимо скомпилировать.
Откройте проект в Xcode. Перейдите в "Цели" и посмотрите "Компилировать источники". Если вы видите файл js в этой папке, переместите его в папку "Copy Bundle Resources" и удалите его из папки "Compile Sources".
Удалите приложение с вашего iPhone, если оно уже установлено для тестирования. Перейдите в меню "Построение" в "Xcode" и "Очистите все цели". Затем перекомпилируйте.
Теперь проверьте, действительно ли ваш HTML файл видит ваш js файл.
Линда
Ответ 2
Вам нужно прочитать файл 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];
}
Что-то вроде этого должно работать для вас.
Ответ 3
В дополнение к Linda Ответ здесь вы найдете файлы:
![enter image description here]()
Ответ 4
У меня также была та же проблема: я преодолел это, выполнив простую вещь при добавлении файлов в XCode. Я сделал небольшое изменение, которое показано на рисунке ниже:
На следующем рисунке показано, что файлы HTML, Javascript и CSS похожи на файлы, а второй - для общих файлов XCode.
![for HTML, Javascript and CSS files]()
![For general XCode files]()