簡體   English   中英

如何在Safari中將Javascript對象傳遞給Java applet?

[英]How to pass a Javascript object to a Java applet in Safari?

我正在嘗試從Javascript調用Java applet,但是當我傳遞一個對象時,Java applet只接收null。 這適用於IE和Firefox,但不適用於Safari 4(嘗試過OSX和Windows版本,似乎都不起作用)。

我正在調用的Java applet方法可能如下所示:

public void sampleFunction(JSObject someobject) throws Exception
{
   someobject.call("somemethod");
}

以及調用它的HTML / Javascript:

<applet archive="Test.jar" code="Test.class" width="0" height="0" id="TestApplet" MAYSCRIPT></applet>
...
var testobject = { somemethod: function() {} };
document.TestApplet.sampleFunction(testobject);

NullPointerException是Safari中的結果,因為Java applet中的“someobject”參數為null。 同樣,這適用於Windows,OSX和Linux中的Firefox和IE,但在Safari中,sampleFunction()將傳遞一個null參數。

而且,反方向似乎也不起作用。 如果我得到窗口對象並從Java調用Javascript,我傳遞的任何對象都不起作用。 例如,我可以傳遞一個字符串數組,在Javascript中我得到一個[Ljava.lang.String類型對象但我無法訪問其中的任何內容(長度未定義且數組運算符不起作用)。

Safari只是破了還是什么? 有任何想法嗎?

如果可以,我建議將對象序列化為JSON字符串。 你可以從json.org獲取json2.js並使用json.stringify(obj)將它發送到你的Java applet。 在java方面,您應該能夠將JSON字符串反序列化為本機對象。 這可能是最可靠的傳輸數據的方法。 這種方法的缺點是,您可能需要一種方法來指定從Java端運行的回調方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM