У UIWebView на iOS есть методы для добавления интерфейса к DOM?
Для android существует метод с именем addJavascriptInterface()
, который импортирует объект JAVA для Android в контекст Javascript. Есть ли какой-либо его эквивалент на iOS?
Я рассмотрел некоторые из подобных вопросов:
androids-addjavascriptinterface-equivalent-in-ios
calling-objective-c-function-from-javascript-in-ios-applications
Но я не смог найти правильное решение моего вопроса.
function initiateAddCall(){
var locus = reader.getPlace().getLocus();
RoomHelper.postReaderLocus(JSON.stringify(locus));
}
RoomHelper
- обработчик javascript, который я использую. Есть ли способ реализовать это (Зарегистрировать обработчик/интерфейс javascript в UIWebView iOS) в UIWebView
iOS.
Ответы
Ответ 1
Я просто использовал EasyJSWebView и работал очень хорошо.
Существуют и другие решения, такие как WebViewJavascriptBridge, но EasyJSWebView был проще в использовании.
RoomHelper *roomHelper = [RoomHelper new];
[self.myWebView addJavascriptInterfaces:interface WithName:@"RoomHelper"];
[self.myWebView injectJS:webView];
в javascript, который вы вызываете:
RoomHelper.test()
а в RoomHelper вы реализуете метод test
RoomHelper.h:
@interface RoomHelper : NSObject
- (void) test;
@end
Ответ 2
Придется использовать это для собственного проекта приложения, где я использовал D3.JS для отображения графиков. Используемый ниже код для вызова функции JS
NSString *jsString = [NSString stringWithFormat:@"showLegendGraphsFromDevice('%@',%d)",sectionName, position];
[_webView stringByEvaluatingJavaScriptFromString:jsString];
Здесь
function showLegendGraphsFromDevice(name, position)
- функция JS
Здесь мы создаем правильную строку JS с необходимыми кавычками.
Ответ 3
Вы можете использовать JavascriptCore для реализации addJavascriptInterface
.