browser widget again

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


Hey, when the var tcoord is declared and/or set its value, how do you do
it?  If you bring up the message watcher, after grabbing your return value
it once, does it continue spamming your livecode handler?  I have the
inkling of a theory..

On Wed, Jun 15, 2016 at 1:41 PM, Mike Bonner <bonnmike at gmail.com> wrote:

> 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