cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "John Little (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CB-8661) executeScript doesn't return the a result on Windows platform
Date Fri, 03 Mar 2017 10:01:45 GMT

    [ 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: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org


Mime
View raw message