[ 
https://issues.apache.org/jira/browse/CB-8661?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15894034#comment-15894034
 ] 

John Little commented on CB-8661:
---------------------------------

Thanks for the fix
Looking at the code I see that line 323 (similar code inside the 
injectScriptFile method) is implemented like this
     var result = [e.target.result];
Rather than the more protected line 296 (inside the injectScriptCode method)
     var result = (e && e.target) ? [e.target.result] : [null];
Both methods call the invokeScriptAsync method which may or may not return an e 
and an e.target
It might be an idea to make them both the same :D

John


> executeScript doesn't return the a result on Windows platform
> -------------------------------------------------------------
>
>                 Key: CB-8661
>                 URL: https://issues.apache.org/jira/browse/CB-8661
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Plugin InAppBrowser, Windows
>         Environment: Windows 8
> Latest version of Cordova 4.3.0
> Latest version of Plugin InAppBrowser 0.6.0
>            Reporter: John Little
>            Assignee: Vladimir Kotikov
>
> executeScript is supposed to provide a variable to the function called when 
> the script is completed as per this clip from the documentation :-
> If the injected script is of type code, the callback executes with a single 
> parameter, which is the return value of the script, wrapped in an Array. For 
> multi-line scripts, this is the return value of the last statement, or the 
> last expression evaluated.
> When running as a Windows app the array is empty.
> Looking in the Windows InAppBrowserProxy.js file, line 230 looks like this
>    op.oncomplete = function () { hasCallback && win([]); };
> So clearly no data is being passed ([]) is an empty array.
> According to the documentation from Microsoft :-
> https://msdn.microsoft.com/en-us/library/windows.ui.xaml.controls.webview.invokescriptasync.aspx
> The invokeScriptAsync function can return a string.
> So if I modify line 230 to look like this
>   op.oncomplete = function (e) { hasCallback && win([e.target.result]); };
> I get a string returned to my callback function.
> You could also modify the similar line in the injectScriptFile function, as 
> it also calls invokeScriptAsync.
> I need the return value because the only way to comunicate between the page 
> in the IAB and the app is to poll some sessionStorage and wait for the page 
> to set some data.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to