Используя 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.