I need the "wait" part too, is it possible to properly encode the raw text 
with a method? 
So I can keep using the executeAndWait variant?

Il giorno giovedì 22 ottobre 2020 alle 14:50:54 UTC+2 Steve Hannah ha 
scritto:

> I see.  It isn't the DOCTYPE it has complaining about. It is that you are 
> placing raw text.  You can't have new lines.
>
> If you want to inject arbitrary strings you should use the execute(String 
> js, Object[] params) variant:
>
> https://www.codenameone.com/javadoc/com/codename1/ui/BrowserComponent.html#execute-java.lang.String-java.lang.Object:A-
>
> E.g.  myBrowserComponent.execute("...iframe.setAttribute('srcdoc', 
> ${0});...", new Object[]{htmlText});
>
> That will properly encode the htmlText (e.g. escaping new lines and other 
> problematic characters).
>
> On Thu, Oct 22, 2020 at 5:36 AM 'P5music' via CodenameOne Discussions <
> [email protected]> wrote:
>
>> Hello,
>> The injected HTML is not under my control, it is a string. If it doesn't 
>> like '<!DOCTYPE as a single string, it also could be not liking other 
>> things.
>> In the provided code above it seems that it is written that way but it is 
>> a string
>> created this way:
>> " ... iframe.setAttribute(\"srcdoc\",\""+htmlText+"\");"
>> Also, as you can see double-quotes " have been replaced by single quotes 
>> ' by the executeAndWait method.
>>
>> Il giorno giovedì 22 ottobre 2020 alle 13:46:25 UTC+2 Steve Hannah ha 
>> scritto:
>>
>>> Perhaps it doesn't like the doctype tag.  Try splitting it up.  E.g.  
>>>
>>> iframe.setAttribute('srcdoc', '<'+'!DOCTYPE html>...');
>>>
>>> On Thu, Oct 22, 2020 at 4:26 AM 'P5music' via CodenameOne Discussions <
>>> [email protected]> wrote:
>>>
>>>> In my CodenameOne app some Javascript code is injected to create a DOM, 
>>>> made of IFRAMES with HTML code inside.
>>>> The HTML code is correct but I am debugging in Chrome and I see that 
>>>> when the HTML code starts an error is detected (the error is also in the 
>>>> IntelliJ IDEA console):
>>>>
>>>> The following text is the function that is made from the executeAndWait 
>>>> method:
>>>>
>>>> (function(){var BASE_URL='
>>>> https://www.codenameone.com/!cn1return/';function doCallback(val) {  
>>>>  var url = BASE_URL + encodeURIComponent(JSON.stringify(val));  if 
>>>> (window.cefQuery) { window.cefQuery({request:'shouldNavigate:'+url, 
>>>> onSuccess: function(response){}, onFailure:function(error_code, 
>>>> error_message) { console.log(error_message)}});}  else if 
>>>> (window.cn1application && window.cn1application.shouldNavigate) { 
>>>> window.cn1application.shouldNavigate(url) } else if (true) 
>>>> {window._cn1ready = window._cn1ready || []; 
>>>> window._cn1ready.push(function(){window.cn1application.shouldNavigate(url)});}
>>>>  
>>>> else {window.location.href=url}} var result = {value:null, type:null, 
>>>> errorMessage:null, errorCode:0, callbackId:3};var callback = {  onSucess: 
>>>> function(val) { this.onSuccess(val);},   onSuccess: function(val) { 
>>>> result.value = val; result.type = typeof(val); if (val !== null && typeof 
>>>> val === 'object') {result.value = val.toString();} doCallback(result);},  
>>>>  onError: function(message, code) { if (message instanceof Error) 
>>>> {result.errorMessage = message.message; result.errorCode = 0;} else 
>>>> {result.errorMessage = message; result.errorCode = code;} 
>>>> doCallback(result);}};try { var 
>>>> div=document.createElement('DIV');div.addEventListener('mousedown', 
>>>> function (event) 
>>>> {callMouseDown(div.getAttribute("id"));});div.addEventListener('mouseup', 
>>>> function (event) {callMouseUp(div.getAttribute("id"));});var 
>>>> iframe=document.createElement("IFRAME");iframe.style.zIndex="0";iframe.style.pointerEvents="none";div.style.position="relative";
>>>> div.id="0";iframe.setAttribute("scrolling","no");iframe.setAttribute("frameborder","no");iframe.setAttribute("noresize","noresize");iframe.setAttribute("height","100");
>>>>  
>>>> iframe.innerText="FALLBACK";iframe.setAttribute("srcdoc","<!DOCTYPE html>
>>>>
>>>> I did not paste all the function body. I stopped when the first HTML 
>>>> code begins for the first IFRAME and the error is there.
>>>> As you can see in the attached image the red error starts at the comma 
>>>> (Uncaught SyntaxError: Invalid or unexpected token).
>>>>
>>>> (The HTML code is a text with other quotes inside as it is in normal 
>>>> HTML but it is correctly escaped)
>>>>
>>>> Can you help me? Do you see something? Could this be caused by the 
>>>> calling function?
>>>> Thanks in advance
>>>> Regards
>>>>
>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "CodenameOne Discussions" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected].
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/codenameone-discussions/42678b68-78f9-40fa-adb1-7f4740b9796fn%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/codenameone-discussions/42678b68-78f9-40fa-adb1-7f4740b9796fn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>
>>>
>>> -- 
>>> Steve Hannah
>>> Software Developer
>>> Codename One
>>> http://www.codenameone.com
>>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "CodenameOne Discussions" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>>
> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/codenameone-discussions/7bf62f74-3642-46d9-b446-9c2bc6aabe6en%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/codenameone-discussions/7bf62f74-3642-46d9-b446-9c2bc6aabe6en%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>
>
> -- 
> Steve Hannah
> Software Developer
> Codename One
> http://www.codenameone.com
>

-- 
You received this message because you are subscribed to the Google Groups 
"CodenameOne Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/codenameone-discussions/da7d4cbf-62fd-4503-9680-2f2a16112ed3n%40googlegroups.com.

Reply via email to