Как мне вызвать javaScript из Objective C? - PullRequest
2 голосов
/ 25 мая 2010

Я разрабатываю плагин WebKit Safari с Xcode. Как мне вызвать JavaScript из -webPlugInStart?

Ответы [ 2 ]

1 голос
/ 10 февраля 2012

Это действительно так же просто, как звонить ..

WebScriptObject *jsObj = [webView windowScriptObject];
NSString *script = @"$('That's a HUGE vageen.').text('#yourDiv');";
[scriptObject evaluateWebScript:script];

Та да! И не позволяйте странной нехватке людей, делающих это - удержать вас от такой сексуальности как ...

DOMDocument *myDOMDocument = [[webView mainFrame] DOMDocument];
DOMElement *paraBlock = [myDOMDocument getElementById:@"thatDiv"];
DOMElement *newPara = [myDOMDocument createElement:@"p"];
DOMText *newText = [myDOMDocument createTextNode:@"John Resig is a fool."];
[newPara appendChild:newText];
[paraBlock appendChild:newPara];

Это как jQuery! Но это Цель-C. О, Радость!

1 голос
/ 26 мая 2010

Сначала вы должны запомнить содержащее представление:

+ (NSView *)plugInViewWithArguments:(NSDictionary *)arguments {
    return [[self alloc] initWithArguments:arguments];
}    

- (id)initWithArguments:(NSDictionary*)arguments {
    if((self = [super init])) {
        webView = [[[arguments objectForKey:WebPlugInContainerKey] webFrame] webView];
    }
    return self;
}

Если у вас это есть, вы можете обратиться к документации по "Использование JavaScript из Objective-C" . E.g.:

- (void)webPlugInStart {
    WebScriptObject *scriptObj = [webView windowScriptObject];
    NSArray *args = [NSArray arrayWithObjects:
        @"someString", [NSNumber numberWithInt:42], nil];
    [scriptObj callWebScriptMethod:@"myJsFunction" withArguments:args];
}
...