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

Давайте смотреть на несколько примеров. Можно хотеть получить 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.