Код, который вы разместили:
[webView stringByEvaluatingJavaScriptFromString:@"test();"];
правильный.Единственное, о чем я могу думать как о причине вашей проблемы, это то, что по какой-то причине файл javascript, содержащий функцию test
, не загружается.
Попробуйте это:
NSString* result = [webView stringByEvaluatingJavaScriptFromString:@"document.title;"];
ипосмотрите, получите ли вы значение в result
.
РЕДАКТИРОВАТЬ:
Если вы загружаете локальный файл HTML, который содержит ссылки на локальные файлы JavaScript, то наиболее вероятная причина для вашего виданеправильное поведение, не указывает baseURL
при инициализации UIWebView
, например:
- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL
Это должно позволить вам правильно загружать файлы JavaScript, доступные в вашей папке ресурсов:
NSString* basePath = [[NSBundle mainBundle] bundlePath];
[_label loadHTMLString:htmlString baseURL:[NSURL fileURLWithPath:basePath]];
Если вы дадите более подробную информацию о том, как организованы ваши файлы HTML / javascript, я могу помочь вам в этом (если моя гипотеза верна).
РЕДАКТИРОВАТЬ 2:
(Вдалее, я предполагаю, что вы находитесь на MacOS, но я понимаю, что об этом нигде здесь не было сказано, если бы в iOS применялись аналогичные рассуждения, но детали были бы другими)
Во-первых, делаетВаш метод делегата webView:didFinishLoadForFrame:
вызывается?Или –webView:didFailLoadWithError:forFrame:
вызывается?
Как указано в другом ответе, вы можете выполнить javascript только после веб-просмотра.
С другой стороны, япочти уверен, что вы неправильно передаете baseURL
NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"allFiles"];
htmlData = [NSData dataWithContentsOfFile:htmlPath];
[webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:htmlPath]];
в этом фрагменте, baseURL
- ваш файл <prefix>/allFiles/index.html
;Вы должны просто передать <prefix>/allFiles
для baseURL
, и если с остальным все в порядке (имеется в виду didFinishLoad
и html-файл, ссылающийся на сценарии с относительным путем к каталогу сценариев), то это должно сработать.
Теперь я не могу предложить способ, чтобы правильно определить путь к каталогу "allFiles" (довольно поздно здесь), но просто для того, чтобы сделать тест, вы можете урезать свой текущий htmlPath
, чтобы удалить из него индекс ".html "подстрока ...