Problem with interoperability with JavaFX WebEngine

David P. Caldwell david at code.davidpcaldwell.com
Fri Mar 27 11:11:43 UTC 2015


So it's very cool, and unexpected, that JavaScript objects obtained
from a JavaFX WebEngine show up as something like ordinary Nashorn
objects in Nashorn scripts. That's an unexpected bonus (I was planning
on using .setMember() and all that stuff from
netscape.javascript.JSObject).

The objects behave a bit strangely, though. So I've got a couple of
bug reports, I guess.

Here's a script that demonstrates the ones I've found so far:

var WebEngine = Java.type("javafx.scene.web.WebEngine");
var engine = new WebEngine();

var window = engine.executeScript("window");

print("foo = " + window.foo);
print("typeof(window.foo) = " + typeof(window.foo));
if (window.foo) {
    print("window.foo is truthy");
}

Output:
$ /usr/lib/jvm/jdk1.8.0_40/bin/jjs -fx nashorn.js
foo = undefined
typeof(window.foo) = string
window.foo is truthy

I actually am using a much more complicated embedding that is done
from Java, so I can tell you the problem is not in the implementation
of the -fx flag.

Other than that, I can't see much; I haven't delved into the Nashorn
code, let alone whatever magic enables this.

-- David.


More information about the nashorn-dev mailing list