Thanks Andre for the detailed response and HTTPD library steer - that’s new to 
me so I shall review with interest. :-)

I’m not in control of the pages, so that may be more useful than my first 
experiments - which were to download the page content into LC, add some markup 
and load the HTML text into the browser widget as a local ‘offline’ page.
Best,
Keith

> On 6 Nov 2018, at 10:38, Andre Alves Garzia via use-livecode 
> <use-livecode@lists.runrev.com> wrote:
> 
> Keith,
> 
> If you're in control of the HTML used in the widget, then I'd advise you to 
> build functions inside the HTML and just call them from LC instead of 
> executing script directly, such as:
> 
> ---- in the html ----
> 
> <html>
> 
>  <head>
> 
>   ...
> 
>    <script>
> 
>    function paintItRed() {
> 
>      document.body.style.backgroundColor = "red";
> 
>    }
> 
>    </script>
> 
>  </head>
> 
>  <body>
> 
>  ...
> 
>  </body>
> 
> </html>
> 
> -------------------
> 
> 
> Then in the LC part you can do something like:
> 
> 
>   do "paintItRed()" in widget "Browser"
> 
> 
> Which is more readable. Also, the body of the function inside the HTML can be 
> as complex as you want. Now, if you're not in control of the HTML, I'd opt 
> for some out-of-the-box strategy where you have the LC HTTPD library serving 
> the JS content and then use the LC "do .. in widget" form to add a new 
> <script> tag with the "src" attribute pointing to the HTTPD library server, 
> the script would load and execute in the context of the loaded page. This 
> should only be done after the page is loaded though or your script risks 
> executing before the HTML is complete.
> 
> Be aware that you can use the "do in widget" form with complex scripts, but 
> I'd rather use the form above which keeps the JS and LC separate which is 
> more of a personal preference than a technical reason to be honest.
> 
> om om
> 
> andre
> 
> On 11/6/2018 9:10 AM, Keith Clarke via use-livecode wrote:
>> Folks,
>> I’ve found a few examples of simple inline script injection to the browser 
>> widget, such as do "document.body.style.background = ‘red';" in widget 
>> "Browser”
>> 
>> Is it possible to inject a multi-line javascript function - with variables 
>> definition, loops, etc - in this fashion or would the function need to be 
>> injected into the page within the browser as markup and then called from a 
>> one-line script from LiveCode?
>> 
>> Thanks & regards,
>> Keith
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode@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@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@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to