-
Notifications
You must be signed in to change notification settings - Fork 5
Open
Description
While working with the executeJS function of the tabs module I found an issue.
Sample Code
function y (result) { console.log('result',result)}
function x () { return [[{"ss":"zz"}]]; }
// a native tab, bound to a global variable
window.testTab.executeJS('(' + x.toString() + ')();',y)
Expected Result
A log entry with: [FORGE] '[[{"ss":"zz"}]]'
Actual Result
Android log entry: [FORGE] '[{"ss":"zz"}]'
IOS log entry: [FORGE] '[[{"ss":"zz"}]]'
On android the first and last character is removed from the output. This makes it impossible to send a valid JSON string as return value and parse it on the application side. Also if nothing is return, the callback parameter is ul, as null gets the same handling.
It think this line causes the behaviour:
Line 190 in 20a21d5
| task.success(value.substring(1, value.length()-1)); |
I also couldn't get into the value==null path.
How is the recommended way to return a value from an injected JS function?
Metadata
Metadata
Assignees
Labels
No labels