browser widget again

Jacques Hausser jacques.hausser at unil.ch
Wed Jun 15 21:28:37 CEST 2016


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
*******************************************



More information about the use-livecode mailing list