Calling JS from Applet: MalformedURLException: unk

2019-05-22 12:31发布

问题:

I read that you could call JavaScript code from a Java Applet by calling

JApplet.getAppletContext().showDocument( "javascript:alert('Hello World');" );

However, when I do this i get the following error:

java.net.MalformedURLException: unknown protocol: javascript

How do I work around this?

回答1:

I get the same exception as you do because of that the URL class does not accept javascript: as a valid protocol.

There is a workaround though; supply an URLStreamHandler to the URL constructor.

Example:

final URLStreamHandler streamHandler = new URLStreamHandler() {

    @Override
    protected URLConnection openConnection(URL u)
        throws IOException {
        return null;
    }

};

try {
    getAppletContext().showDocument(
        new URL(null, "javascript:alert('It works!');", streamHandler));
} catch (MalformedURLException me) {
    //log or whatever
}


回答2:

    try {
        this.getAppletContext().showDocument(new URL("javascript:alert('hello world');"));
    }catch(Exception e) {
        e.printStackTrace();
    }

Works !!

Maybe the browser does not have javascript enabled.. just a guess