Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在nashorn中强制转换java类?_Javascript_Java_Javafx_Webview_Nashorn - Fatal编程技术网

Javascript 如何在nashorn中强制转换java类?

Javascript 如何在nashorn中强制转换java类?,javascript,java,javafx,webview,nashorn,Javascript,Java,Javafx,Webview,Nashorn,在我的应用程序中,我使用javafx,我有一个显示网站新闻的WebView。单击此WebView内部的任何链接时,应在浏览器中打开,而不是在WebView中打开。我找到了应该在java中工作的代码: NodeList nodeList = document.getElementsByTagName("a"); for (int i = 0; i < nodeList.getLength(); i++) { Node node= nod

在我的应用程序中,我使用javafx,我有一个显示网站新闻的WebView。单击此WebView内部的任何链接时,应在浏览器中打开,而不是在WebView中打开。我找到了应该在java中工作的代码:

NodeList nodeList = document.getElementsByTagName("a");
        for (int i = 0; i < nodeList.getLength(); i++)
        {
            Node node= nodeList.item(i);
            EventTarget eventTarget = (EventTarget) node;
            eventTarget.addEventListener("click", new EventListener()
            {
                @Override
                public void handleEvent(Event evt)
                {
                    EventTarget target = evt.getCurrentTarget();
                    HTMLAnchorElement anchorElement = (HTMLAnchorElement) target;
                    String href = anchorElement.getHref();
                    //handle opening URL outside JavaFX WebView
                    System.out.println(href);
                    evt.preventDefault();
                }
            }, false);
        }
NodeList NodeList=document.getElementsByTagName(“a”);
for(int i=0;i
但诀窍是,我需要将其转换为js(使用nashron引擎)。以下是我目前的情况:

pane.lookup("#newsPane").getEngine().getLoadWorker().stateProperty()["addListener(javafx.beans.value.ChangeListener)"](
    function(o, ov, nv){
        if (nv == javafx.concurrent.Worker.State.SUCCEEDED) {
            // Here the things get started
            var nodes = pane.lookup("#newsPane").getEngine().getDocument().getElementsByTagName("a");
            for(var i=0;i<nodes.getLength();i++){
                var node = nodes.item(i);
                // I got node, but now i need to cast it to EventTarget, but i didn't find anywhere how to do that
                LogHelper.info(node);
                // instead of *node* there should be *eventTarget*, also i'm not sure the code above will work even with EventTarget
                node['addEventListener("click", javafx.event.EventListener)'](
                    function(evt){
                        var target = evt.getCurrentTarget();
                        var href = target.getHref();
                        LogHelper.info(href);
                        evt.preventDefault();
                    }
                )
            }
        }
    });
pane.lookup(“#新闻窗格”).getEngine().getLoadWorker().stateProperty()[“addListener(javafx.beans.value.ChangeListener)”](
功能(o、ov、nv){
if(nv==javafx.concurrent.Worker.State.successed){
//事情开始了
var nodes=pane.lookup(“#新闻窗格”).getEngine().getDocument().getElementsByTagName(“a”);

对于(var i=0;i当您使用JavaScript时,您不需要强制转换对象。因此只需调用对象上的函数即可。

您可以使用Java.type()语法在JavaScript中实例化Java类。这就是强制转换的意思吗?。没有真正理解您的问题。如果没有模棱两可的函数签名,那么您将得到在运行时“无法在固定算术签名之间进行明确选择”。请查看上的“显式方法选择”以获取选择所需签名的方法。例如:
java.lang.System.out[“println(int)”](Math.PI);