Discussion:
How to diagnose browser widget JS handlers failing silently?
Keith Clarke via use-livecode
2018-11-14 12:40:40 UTC
Permalink
Folks,
Is there any way to see the raw message that arrive in LC from javascripts in a browser widget?

I’m getting silent failures on some JSHandlers and would like to determine whether it’s JS failing to send (unlikely as they’re variations on working themes) or LC rejecting the inbound message due to syntax, unescaped quotes, etc.
Thanks
Keith
hh via use-livecode
2018-11-14 16:34:06 UTC
Permalink
You can use the params to see what arrives.

Most probably you didn't convert the parameters of the handler
in the JavaScript to arrays or strings.

LiveCode expects strings or arrays as params of javaScriptHandlers.

So "combine" on the LC side and/or ".toString()" on the JS side are
your friends.

Example test:

-- script of the widget (or above it in the message path)
on JS u,v,w -- a javaScriptHandler of widget "browser"
if u is an array then combine u with ":"
put u & cr & v & cr & w
end JS

on mouseUp
do "var x=[1,2,3], y='hello'; " & \
"liveCode.JS(x, y, x.toString())" in widget "browser"
end mouseUp
Keith Clarke via use-livecode
2018-11-23 20:03:58 UTC
Permalink
Thanks for the response, Herman.

In the error state I’m getting, the LC JShandler script parameters are empty and so far, I’m having no luck with getting toString(); to stringify javascript objects such that LC doesn’t fail silently.

Indeed, your test scripts fail in my situation - so I’m going to have to create a simpler test-bed.
Best,
Keith
Post by hh via use-livecode
You can use the params to see what arrives.
Most probably you didn't convert the parameters of the handler
in the JavaScript to arrays or strings.
LiveCode expects strings or arrays as params of javaScriptHandlers.
So "combine" on the LC side and/or ".toString()" on the JS side are
your friends.
-- script of the widget (or above it in the message path)
on JS u,v,w -- a javaScriptHandler of widget "browser"
if u is an array then combine u with ":"
put u & cr & v & cr & w
end JS
on mouseUp
do "var x=[1,2,3], y='hello'; " & \
"liveCode.JS(x, y, x.toString())" in widget "browser"
end mouseUp
_______________________________________________
use-livecode mailing list
http://lists.runrev.com/mailman/listinfo/use-livecode
Loading...