Re: Calling javascript from Cocoa 'facelessly'
Re: Calling javascript from Cocoa 'facelessly'
- Subject: Re: Calling javascript from Cocoa 'facelessly'
- From: Geoffrey Holden <email@hidden>
- Date: Sat, 3 Jul 2010 21:08:41 +0100
Thanks for this. I'll try that. I have produced WebViews before with no problems, although this is the first time that I've tried to do it facelessly. What I'd really like, of course, is a means of running JavaScript without a webview - i.e. provide a link to the JavaScript directly, without any of the html business.
In answer to your question though, this would be a client app. The server component, accessing the data, can be accessed through the javascript / webpage.
On 3 Jul 2010, at 15:01, Izidor Jerebic wrote:
>
> 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
_______________________________________________
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