【问题标题】:TypeError in JavaFX WebViewJavaFX WebView 中的类型错误
【发布时间】:2018-02-15 10:20:27
【问题描述】:

我是registering 我的Java Object 如下所示

engine = webView.getEngine();
engine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
        @Override
        public void changed(ObservableValue<? extends Worker.State> observable, Worker.State oldValue, Worker.State newValue) {
            if (newValue == Worker.State.SUCCEEDED) {
                JSObject jsobj = (JSObject) engine.executeScript("window");
                jsobj.setMember("iLink", new IndexLink(this));
                webView.setContextMenuEnabled(false);
            }
        }
});

有时效果很好,但有时会显示 "TypeError: iLink.getDemoTable is not a function. (In 'iLink.getDemoTable()', 'iLink.getDemoTable' is undefined) (index.js,7)"

谁能告诉我above code中的missinganything wrong是什么步骤?

提前致谢。

【问题讨论】:

  • 我认为没有人能够回答您的问题,因为您添加的代码示例还不够。看看如何创建minimal, complete and verifiable example。在你的情况下,我们怎么知道getDemoTable() 是什么。

标签: javascript java javafx


【解决方案1】:

我从Here得到了解决方案

并做了以下更改

link=new IndexLink(this);在控制器的初始化方法中

engine = webView.getEngine();
link=new IndexLink(this);
engine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
    @Override
    public void changed(ObservableValue<? extends Worker.State> observable, Worker.State oldValue, Worker.State newValue) {
        if (newValue == Worker.State.SUCCEEDED) {
            JSObject jsobj = (JSObject) engine.executeScript("window");
            jsobj.setMember("iLink", link);
            webView.setContextMenuEnabled(false);
        }
    }
});

jsobj.setMember("iLink", 链接);并且对 Worker 的更改成功

之后一切正常。

【讨论】:

    猜你喜欢
    • 2015-01-27
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 2019-05-04
    • 2015-08-14
    • 2012-08-11
    • 2012-06-01
    • 1970-01-01
    相关资源
    最近更新 更多