【问题标题】:Calling JS from Applet: MalformedURLException: unknown protocol: javascript从 Applet 调用 JS:MalformedURLException:未知协议:javascript
【发布时间】:2010-09-15 11:24:15
【问题描述】:

我读到您可以通过调用从 Java Applet 调用 JavaScript 代码

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

但是,当我这样做时,我收到以下错误:

java.net.MalformedURLException: unknown protocol: javascript

我该如何解决这个问题?

【问题讨论】:

    标签: java javascript url


    【解决方案1】:

    我得到了和你一样的异常,因为 URL 类不接受 javascript: 作为有效协议。

    不过有一个解决方法;为 URL 构造函数提供一个 URLStreamHandler。

    例子:

    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
    }
    

    【讨论】:

    • 这会在 Firefox 中打开一个新选项卡,但页面和位置地址都是空的。什么都没有发生.. :/
    • 没关系,显然我在 Ubuntu 上的 Firefox 3.0.3 有问题 :) 它可以在其他计算机上完美运行。谢谢!
    【解决方案2】:
        try {
            this.getAppletContext().showDocument(new URL("javascript:alert('hello world');"));
        }catch(Exception e) {
            e.printStackTrace();
        }
    

    工作!

    也许浏览器没有启用 javascript.. 只是猜测

    【讨论】:

      猜你喜欢
      • 2018-01-14
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2015-03-17
      • 2011-11-22
      • 2021-07-29
      • 2018-12-05
      相关资源
      最近更新 更多