我一直在試圖圍繞這個包裹我的頭。請幫我把我弄糟的地方。Java Applet調用JavaScript函數返回值
以相若方式在這個網址電話: http://www.codejava.net/java-se/applet/call-javascript-function-from-java-applet
我從我的Java小程序的初始化中進行的呼叫並啓動方法給瀏覽器。
的Javascript是這樣:
function getHHandler() {
console.log("handler requested from applet");
return HHandler.handler();
}
HHandler.instance = null;
function HHandler() {
...
}
HHandler.prototype = {
doStuff : function() {
}
};
HHandler.handler = function() {
if(HHandler.instance == null)
HHandler.instance = new HHandler();
return jsb.instance;
};
下面是來自小程序我調試準備的方法 - 沒有什麼特別的,至少它應該是:
private Object getHandlerObject() {
Object jo = browser.call("getHHandler", null);
log("call getJSBHandler():" + jo);
return jo;
}
我經歷過的神諭的例子,無數的網站,教程,文檔和所有指向相同的調用和eval方法。
經驗 會發生什麼事是當小程序調用到getHHandler javascript函數 - 我可以看到控制檯日誌在瀏覽器中看到的動作沒有實際發生,但是從JavaScript return語句從不回Java代碼。所以Java留下了一個我沒有用過的空對象。 我甚至仔細檢查過,以確保在返回語句之前js var不爲null。
我能理解爲什麼 browser.call(「HHandler.handler」,null); 會嚇壞了,並拋出一個NotAFunction異常,但在這種情況下,一切似乎順利,但返回值。
<applet id="appletId" archive="../path/to/applet.jar" code=com.package.Main.class width="1" height="1" mayscript></applet>
它甚至不關心applet是自簽名還是根本不簽名。 Mayscript被添加 - 不是它有所作爲。
任何建議/輸入?
*「它甚至不關心,如果小程序是自簽名或完全沒有簽名。」*它也沒有任何區別。 「自簽名」的小程序現在被認爲是未簽名的。 –