Hi,
This is a known restriction introduced in an earlier build, not specifically in 20.1.45.0. The new restriction does not allow re-entering JavaScript engine. This is necessary because the JavaScript engine can not be re-entered by design and early versions of EO.WebBrowser does not enforce this and allow it to be re-entered thus can cause all kind of problems. As a result, the new version no longer allows this.
The following code explains what re-entering is and why it is not allowed for JavaScript:
Code: JavaScript
var i = 0;
alert("hi");
console.log("i=" + i);
In any circumstance, the above code should print "i=0".
However consider in EO.WebBrowser where you can handle WebView.JSDialog to respond the JavaScript "alert" call. If you have the following code in WebView.JSDialog event hanlder:
Code: C#
webView.EvalScript("i=1;");
Then variable "i" will be changed when "alert" returns. This should not be allowed.
When you try to access a JSObject's property inside one of your ObjectForScripting function, it is similar to calling EvalScript in JSDialog handler (because it must go back to the JavaScript engine to ask for the properly value). This is no longer allowed.
In your case, this basically means you can no longer pass JSObject as arguments to your ObjectForScripting functions. You can change them to pass simple values such as string and integer, or an array of them. But you can no longer pass complex objects. Returning complex object from JavaScript to .NET side is still allowed since it does not violate the re-entering rule.
Hope this helps. Please feel free to let us know if you still have any questions.
Thanks!