browser widget again
David Bovill
david at viral.academy
Wed Jun 15 15:03:06 EDT 2016
I have the same sort of problem. It seems that calling javascript from
Livecode with "do someFunction in browser" does not return anything even if
the Javascript function does return a value? Or maybe the returned value
needs to be of a certain type?
If you write javascript that calls Livecode I think there is no issue, but
for accessing existing pages I think we can't get results from javascript
functions.
On 15 June 2016 at 19:25, Mike Bonner <bonnmike at gmail.com> wrote:
> You said tcoord contains the information you want to return...
>
> I don't think you need to actually include the livecode function call in
> your html, I'm pretty sure you can remove it entirely and do something like
> this..
>
> do "liveCode.inputLoc(tcoord)" in widget "Browser" and it will work. (It
> did for me, its possible there are issues elsewhere in the javascript code)
>
> In this way you can define a single javascripthandler and have it hand back
> any data you need.
>
> As a quick example, I set the htmltext of a widget to the following..
>
>
> <html>
> <body>
> <script>
> var tcoords='1,2,3'
> </script>
> </body></html>
>
> The ONLY thing in there as javascript is the declaration of tcoords
>
> Then from the message box I set a javascript handler to myJSHandler and
> then..
> do "liveCode.myJSHandler(tcoords,'fred')" in widget 1
>
> For my lc handler I used paramcount and param() to find out and show the
> data that was passed out.
>
> command myjshandler
> put empty
> repeat with i = 1 to the paramcount
> put param(i) & cr after msg
> end repeat
> end myjshandler
>
> As expected the message box displayed
> 1,2,3
> fred
>
> You might be able to leverage this into some debugging ability.
>
> I did try a bunch of different ways to get things out (some that seemed
> like they SHOULD work but didn't, causing an "error eveluating javascript"
> error)
>
> It even seemed sometimes that a method that worked just a minute ago would
> stop. (I'm so bad at javascript though, its no surprise i'm lost)
>
>
> On Wed, Jun 15, 2016 at 10:38 AM, Jacques Hausser <jacques.hausser at unil.ch
> >
> wrote:
>
> > Still trying to use the browser widget and its javascripthandlers. I
> > picked information here and there (many thanks to those who answered my
> > previous mails, especially Mike) but really I would be glad to find a
> > detailed user’s guide somewhere. I’m using a html file exploiting google
> > map’s API as URL, and it works perfectly well with the old style browser.
> > But I cannot grab the information I want with the new browser widget.
> > Hereunder a simplified (and tested) example of what I tried for the old
> > browser (successfully) and the widget browser (to no avail).
> >
> > ——————————————————————————————
> > old style browser:
> > ——————————————————————————————
> > in the card script:
> >
> > command getLoc
> > get revBrowserCallScript(LBrowserID,exportXYZ)
> > put it into fld "FResult"
> > end getLoc
> >
> > in the html file:
> >
> > function exportXYZ()
> > //tCoord contains the ccordinates and altitude of the last point clicked
> > {
> > var vCoord = tCoord;
> > return vCoord;
> > }
> > ——————————————————————————————
> > browser widget:
> > ——————————————————————————————
> > in the card script:
> >
> > command getLoc
> > do "exportXYZ();" in widget "mapBrowser"
> > end mouseUp
> >
> > command inputLoc pCoord
> > —- this command’s name is in the list of javascripthandlers for my
> browser
> > put pCoord into fld "FResult"
> > end inputLoc
> >
> > in the html file:
> >
> > function exportXYZ()
> > //tCoord contains the ccordinates and altitude of the last point clicked
> > {
> > var pCoord = tCoord;
> > liveCode.inputLoc(pCoord);
> > }
> > ——————————————————————————————
> >
> > the html file is exactly the same in both cases except for the change
> > illustrated above. The map is displayed as expected in the browser
> widget,
> > I can click any location to get a marker displayed and I can move to a
> new
> > region with the following:
> >
> > ——————————————————————————————
> > in the card script:
> >
> > command newReg plat,plon,pzoom
> > do "goToReg(plat,plon,pzoom);” in widget "mapBrowser"
> > end mouseUp
> >
> > and in the htlm file:
> >
> > function goToReg(pLat,pLng,pZoom)
> > {
> > var newCenter = new google.maps.LatLng(pLat,pLng);
> > tmap.setCenter(newCenter);
> > var tZoom = parseInt(pZoom,10);
> > tmap.setZoom(tZoom);
> > }
> > ——————————————————————————————
> >
> > Thus “do … in widget” works; but I cannot fetch those damned coordinates
> > with “liveCode.inputLoc(pCoord);". How to make the javascriptHandlers to
> > work ?
> >
> > PS: Mac 10.11.5, LC 8.0.2 rc2
> >
> >
> > _______________________________________________
> > use-livecode mailing list
> > use-livecode at lists.runrev.com
> > Please visit this url to subscribe, unsubscribe and manage your
> > subscription preferences:
> > http://lists.runrev.com/mailman/listinfo/use-livecode
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>
More information about the use-livecode
mailing list