browser widget again

Mike Bonner bonnmike at gmail.com
Wed Jun 15 15:41:09 EDT 2016


Not sure I understand whats going on either, I'd probably have to see more
code.

@david.. I don't have time to try it right now, but I _THINK_ if you have
an existing function in your page and you want to get the results of that
function out, you can treat the function as a parameter to your livecode
call.

Meaning if you have defined a javascrpithandler named fred, and your page
has a function named add() which takes 2 values to be added it will
probably work do do this..

do "liveCode.fred(add(4,3))" in widget "browser"

Hmm in fact, i'll try it now.

Yep, it works fine. Just pop whatever existing function (that has a return
value) that you want to get back out of the widget as a parameter to your
javascripthandler call and poof. Out it comes.

In my test I had this in the page..


<html>
<body>
<script>
var tcoords='1,2,3'
function add(p1,p2) {
return p1 + p2;
}
</script>
</body></html>

And have registered myJSHandler as my livecode hook.

Then this will get the results back out.
do "liveCode.myJSHandler(add(1,2))" in widget 1
It uses the existing add function to add the 2 numbers passed in, and my
generic handler displays 3 in the message box.


On Wed, Jun 15, 2016 at 1:28 PM, Jacques Hausser <jacques.hausser at unil.ch>
wrote:

> YESSS ! IT WORKS ! Many thanks, Mike !
>
> But I’m very surprised: I don’t have to call my command “getLoc” more than
> one time: after that, each time I change the location of my marker on the
> map, the value of tCoord (which is declared at the start of the script,
> that is, as “global”) is modified, the function is triggered and the new
> coordinates are displayed in fld “Result”. I do not understand why,
> actually. Nothing to do with my “exportXYZ” javascript function, which was
> suppressed. My card script now contains:
>
> command getLoc
>     do "liveCode.inputLoc(tCoord);" in widget "mapBrowser"
> end getLoc
>
> on inputLoc
>    put param(1) into fld “FResult"
> end inputLoc
>
> (it’s less general than your version, but I wanted just to check it)
>
> I still have to dig further away to understand how it works. But you made
> my day !
>
> Jacques
>
> > Le 15 juin 2016 à 20:25, Mike Bonner <bonnmike at gmail.com> a écrit :
> >
> > 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
>
> ******************************************
> Prof. Jacques Hausser
> Department of Ecology and Evolution
> Biophore / Sorge
> University of Lausanne
> CH 1015 Lausanne
> please use my private address:
> 6 route de Burtigny
> CH-1269 Bassins
> tel:    ++ 41 22 366 19 40
> mobile: ++ 41 79 757 05 24
> E-Mail: jacques.hausser at unil.ch
> *******************************************
>
> _______________________________________________
> 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