UIWebView не загружает внешний файл Javascript - PullRequest
26 голосов
/ 31 августа 2010

У меня есть следующий невинно выглядящий код (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]]];
}

Ответы [ 4 ]

60 голосов
/ 02 сентября 2010

Я обнаружил, что XCode считает, что JS-файл должен быть скомпилирован.

Откройте проект в XCode.Перейдите в «Цели» и посмотрите в «Компиляция источников».Если вы видите свой js-файл в этой папке, переместите его в папку «Copy Bundle Resources» и удалите его из папки «Compile Sources».

Удалите приложение с iPhone, если оно уже установлено для тестирования,Перейдите в меню Build в Xcode и очистите все цели.Затем перекомпилируйте.

Проверьте сейчас, чтобы увидеть, действительно ли ваш HTML-файл действительно видит ваш файл js.

Линда

7 голосов
/ 31 августа 2010

Вам нужно прочитать 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];
}

Нечто подобное должно работать для вас.

6 голосов
/ 02 ноября 2012

В дополнение к ответу Линды вы найдете файлы:

enter image description here

5 голосов
/ 02 июля 2012

Я также столкнулся с той же проблемой: я преодолел ее, выполнив простую вещь, добавляя файлы в XCode. Я сделал небольшое изменение, показанное на рисунке ниже:

На рисунке ниже одиндля добавления HTML, Javascript и CSS-подобных файлов, а второй - для общих файлов XCode.

for HTML, Javascript and CSS files

For general XCode files

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...