Re: Calling javascript from Cocoa 'facelessly'
Re: Calling javascript from Cocoa 'facelessly'
- Subject: Re: Calling javascript from Cocoa 'facelessly'
- From: Izidor Jerebic <email@hidden>
- Date: Sat, 3 Jul 2010 16:01:51 +0200
You did not spell out where exactly this code will run - who is going
to be the host application.
To prevent all stupid errors (typing, etc.), I would suggest you start
from the beginning - create a simple GUI app, make a window with
WebView, and then load your stuff into this WebView. After that works,
you can continue pruning your application until you have what you
need. But on every step, you can make sure that everything works, and
you can easily find out what causes problems if you make small enough
steps.
This approach will also make easy to ask questions - you will have
very specific problems on every step and that makes it easy to ask/
google etc.
But if this code of yours already runs in a GUI app, it is all wrong -
you should put the code doing the login (everything after [mainFrame
loadRequest:request]) in a method of a load delegate of WebView. Look
at the WebView documentation methods, especially setFrameLoadDelegate:
and delegate method - (void)webView:(WebView *)sender
didFinishLoadForFrame:(WebFrame *)frame.
After this works, you can proceed to first make your own webview
object. AFAIK webview only works with main runloop, so make sure your
host application has one and it works ok.
izidor
On 2.7.2010, at 22:32, Geoffrey Holden wrote:
Thanks for this. I tried it, checking that provisionalDataSource is
nil before continuing as per the documentation, but sadly I still
get the same result - regardless of whether I have the real
javascript function name or a made up one, and regardless of whether
the URL I use is real or imaginary. Most frustrating. I checked
that my NSRunLoop was working properly by using sleep - and it is.
Perplexed. Any other ideas?
On 30 Jun 2010, at 19:30, Michael Ash wrote:
On Wed, Jun 30, 2010 at 1:01 PM, Geoffrey Holden
<email@hidden> wrote:
I realize that this is a hell of a big query, and I'm not entirely
sure that I've given enough information for anyone to help answer
it. At the very least, I guess I'm hoping for a reference to some
really solid documentation on how to do what I'm trying to do -
the documentation on ADC seems to be a little light in this area.
From the code you've posted, I suspect the problem is that the page
hasn't actually loaded by the time you try to run your JS code.
WebView generally works asynchronously. Something like [mainFrame
loadRequest:request] will return quickly and the WebView will not
actually load things until the runloop runs, and then you'll get
notified later on when it's done loading.
What you'll want to do is call loadRequest:, then run the NSRunLoop
on
the main thread until your load delegate is told that the page is
done
loading. Then you should be able to do your JS stuff.
Note that it is possible, and not all that hard, to run an NSRunLoop
in a faceless program, it just requires a bit more manual
intervention
than in a GUI app where it's all set up for you.
If you're already doing that and your code was just abbreviated,
well,
ignore the above....
Mike
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden