Вызовите javascript - щелкните () в WebView из кода Какао Objective-C - PullRequest
1 голос
/ 01 сентября 2011

В приложении MacOS X я создаю окно, содержащее WebView.WebView инициализируется на html-странице, которая содержит привязку: Перейти в Google.

Я хотел бы нажать на эту ссылку из другого класса.

Кажется очевидным, что простой код JavaScript будетвыполним трюк: document.getElementById("myLink").click();

Итак, я написал небольшой код объективного c, который должен это делать:

   NSString *cmd = @"document.getElementById(\"myLink\").click();";
    id result = [[attachedWebView windowScriptObject] evaluateWebScript:cmd];
    if ([result isMemberOfClass:[WebUndefined class]]) {
            NSLog(@"evaluation of <%@> returned WebUndefined", cmd)

Но я не могу заставить его работать.Если у кого-то есть идея, это действительно поможет.

Ответы [ 2 ]

1 голос
/ 02 сентября 2011

Итак, вот решение, которое я использовал.

Создан файл: WebAgent.js , содержащий следующий код:

function myClick(id) {
    var fireOnThis = document.getElementById(id);
    var evObj = document.createEvent('MouseEvents');
    evObj.initEvent( 'click', true, true );
    fireOnThis.dispatchEvent(evObj);
}

И следующий код в моемкласс target-c

// load cmd.js
    NSString *path = @"/code/testagent/WebAgent/WebAgent/WebAgent.js";
    NSString *jsCode = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    [[self attachedWebView ]stringByEvaluatingJavaScriptFromString:jsCode];

//do the click
    NSString * anchorId = @"myId";
    NSString *call = [NSString stringWithFormat:@"WebAgent_click('%@')",anchorId];
    [[self attachedWebView] stringByEvaluatingJavaScriptFromString:call];

NB : я использовал это решение для того, чтобы код JS был в конкретном файле, так как я ожидаю, что в будущем будет больше кода JS.

Спасибо за вашу помощь.

1 голос
/ 01 сентября 2011

Я думаю, что ничего общего с веб-обзором нет, а только ваш javascript.

Работает ли это, если вы попробуете это в консоли Safari?Я бы не ожидал, что вы можете только нажать () элементы ввода (кнопки) надежно кросс-браузер.JQuery click () должен работать так:

см. Как программно щелкнуть ссылку с помощью JavaScript?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...