[
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]