Используя JavaScript от Objective C
Веб-возможности сценариев WebKit разрешают Вам получать доступ к атрибутам JavaScript и вызывать функции JavaScript из Ваших приложений Objective C Какао. Отошлите к WebKit Темы Программирования DOM, если Вы хотите получить доступ к Objective C API от JavaScript.
Объекты JavaScript представлены экземплярами WebScriptObject
в Objective C. API использует экземпляры WebScriptObject
обертывать объекты сценария передало от среды сценариев до Objective C. Можно использовать методы этого класса, чтобы вызвать функции JavaScript и получить/установить свойства среды JavaScript.
Вы не должны создавать WebScriptObject
экземпляры явно. Скорее используйте windowScriptObject
метод от WebView
получить доступ к среде сценариев.
Параметры метода должны быть объектами или типами исходных данных как int
и float
. Объекты Objective C будут преобразованы в их эквиваленты JavaScript WebKit:
NSNumber
объекты будут преобразованы в числа JavaScript.NSString
объекты будут преобразованы в строки JavaScript.NSArray
объекты будут отображены на специальных массивах только для чтения.NSNull
будет преобразован в нуль JavaScript.Все другие объекты будут обернуты WebKit в надлежащие объекты для среды JavaScript.
Давайте смотреть на несколько примеров. Можно хотеть получить URL текущего веб-представления от JavaScript, вместо того, чтобы получить доступ к URL от источника данных WebView WebFrame
. Можно сделать это со всего несколькими строками кода:
id win = [webView windowScriptObject]; |
id location = [win valueForKey:@”location”]; |
NSString *href = [location valueForKey:@”href”]; |
JavaScript упрощает получать доступ к атрибутам окна веб-страницы. WebKit упрощает получать ту информацию от JavaScript и передавать его Objective C. Свойства, такой как location
и href
, если класс переопределяет, только доступны от объекта сценария isKeyExcludedFromWebScript()
возвратиться NO
для данных свойств. То же является истиной для любых селекторов. Но помните, главной особенностью веб-системы сценариев в WebKit является возможность вызвать функции JavaScript. Одна из встроенных функций JavaScript, location.href
, возвращает URL окна в одном вызове. С этим в памяти, можно сократить средство доступа URL с тремя линиями в примере выше вниз к одной простой строке:
NSString *href = [[webView windowScriptObject] evaluateWebScript:@”location.href”]; |
Можно также вызвать функции JavaScript с параметрами. Предположите запись функции JavaScript, которая похожа на это:
function addImage(image, width, height) { ... } |
Его цель состоит в том, чтобы добавить изображение к веб-странице. Это вызывают с тремя параметрами: image
, URL изображения; width
, экран width изображения; и height
, экранная высота изображения. Можно вызвать этот метод один из двух путей от Objective C. Первое создает массив параметров до использования WebScriptObject
мост:
id win = [webView windowScriptObject]; |
NSArray *args = [NSArray arrayWithObjects: |
@”sample_graphic.jpg”, |
[NSNumber numberWithInt:320], |
[NSNumber numberWithInt:240], |
nil]; |
[win callWebScriptMethod:@"addImage" |
withArguments:args]; |
Вторая версия отправляет право параметров на JavaScript:
[win evaluateWebScript: |
@"addImage(’sample_graphic.jpg’, ‘320’, ‘240’)"]; |
Для получения дополнительной информации об использовании WebScriptObject
для открытия JavaScript to Objective-C считайте Ссылку Платформы WebKit.