penguinrob
penguinrob

Reputation: 1459

Call Javascript function of webpage in cocoa webview

First, I'm a complete newbie at objective-c and cocoa. I've found resources related to this, but none showing what I want, and I can't seem to get the others to work for me. What I need is a really dumbed-down example with a window containing a button and a webview that has an HTML page with a javascript function that takes one parameter (a string or something), and spits it out via document.write. (I know javascript).

Then when you click the button outside of the webview, it will call the javascript function, and the webview will say something, from the document.write call. If someone could perhaps put together a quick example like this, I'd really appreciate it!

Thanks.

Upvotes: 8

Views: 8873

Answers (5)

Mark Ingram
Mark Ingram

Reputation: 73673

If you just want to call a Javascript function, this is the way to do it:

WebScriptObject *script = [_webView windowScriptObject];
[script callWebScriptMethod:@"jsFunctionWithText" withArguments:@[@"Some text"]];

In your HTML page you'll need the following:

<script>
function jsFunctionWithText(text)
{
    document.write(text);
}
</script>

Upvotes: 7

Nadim Kobeissi
Nadim Kobeissi

Reputation: 254

None of the previous solutions worked for me. However, I found this method in the Apple Developer documentation which did allow me to execute JS code in my webView successfully.

Here is an example that worked for me in XCode 4.6.1 (OS X 10.8.3):

[[webView windowScriptObject] evaluateWebScript:@"document.write('derp')"];

Upvotes: 4

user58777
user58777

Reputation:

To get the WebView working see this awesome tutorial by Lost Decade Games:

How to embed HTML5 into a native Mac OSX app.

Upvotes: 2

Jirapong
Jirapong

Reputation: 24256

You should try to see my answer on this question - Displaying HTML in iPhone app

then you can use javascript as just normal html standard by add them to your XCode project's file.

Upvotes: 0

Jon Steinmetz
Jon Steinmetz

Reputation: 4124

You can use stringByEvaluatingJavaScriptFromString: to call javascript in your web view.

[ webView stringByEvaluatingJavaScriptFromString: @"myJavascriptFunction()" ];

This is not as complete an example as you have asked for but a complete application example is somewhat beyond what is appropriate for StackOverflow.

Upvotes: 16

Related Questions