كيفية استدعاء وظائف Applet المنقولة عن WebStart من JavaScript؟
-
27-09-2019 - |
سؤال
أود أن أكون قادرًا على الاتصال بـ JavaScript وظيفة من فئة JNLP الخاصة بي. دعنا نفترض في تطبيق التطبيق الخاص بي ، لدي وظيفة محددة مثل هذه: public String returnSomething(){ return "bla"; }
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- ########################## IMPORTANT NOTE ############################ -->
<!-- This preview HTML page will work only with JDK 6 update 10 and higher! -->
<!-- ###################################################################### -->
<html>
<head>
<title>Test page for launching the applet via JNLP</title>
</head>
<body>
<h3>Test page for launching the applet via JNLP</h3>
<script src="http://java.com/js/deployJava.js"></script>
<script>
var attributes = {
code: "winToJnaApi.NewApplet",
archive: "JavaApplication6.jar, lib/jna.jar, lib/platform.jar",
width: 300,
height: 300,
name: "applet",
id: "app"
};
var parameters = {jnlp_href:"launch.jnlp"}; <!-- Applet Parameters -->
var version = "1.5"; <!-- Required Java Version -->
deployJava.runApplet(attributes, parameters, version);
</script>
<input type = "button" value ="click" onClick = "document.write(document.getElementById("app").doSomething())">
<script type="text/javascript">
document.write(document.getElementById("app"));
</script>
</body>
</html>
هل هذه هي الطريقة المناسبة للاتصال بوظائف Applet المنقولة JNLP من JavaScript؟ لأن هذا لا يعطيني أي شيء.
المحلول
حصلت عليه منذ وقت طويل ، لكنني نسيت أن أجيب على سؤالي. حتى هنا هو عليه:
لنفترض أنك تحدد تطبيقك مثل هذا:
<applet id="appletToTest" width=500 height=500 code="com.sample.SampleApplet" archive="JavaApplication6.jar, lib/lib1.jar, lib/lib2.jar">
<param name="jnlp_href" value="launch.jnlp">
</applet>
يمكنك الحصول على جافا سكريبت! تعامل مع التطبيق مثل هذا:
var parentAPPLET = document.getElementById("appletToTest");
الآن ، مهما كانت الطريقة التي لديك في التطبيق الخاص بك ، فإنها أفضل لسلسلة إرجاع أو قيمة بدائية ، ولكن حتى لو لم تكن تعمل عليها على افتراض أنك تعرف أساليبها. استمرار مثالي من أعلاه ، إذا كان لديك وظيفة محددة مثل هذه:
public String returnSomething(){ return "bla"; }
ثم يمكنك تسميته مع JavaScript الخاص بك مثل هذا:
var parentAPPLET = document.getElementById("appletToTest");
alert (parentAPPLET.returnSomething());
وتهانينا ، اتصلت بأسلوب applet Java من JavaScript التي تم نشرها بواسطة JWS.
هناك طريقة أخرى للقيام بذلك ولكنها ستعمل فقط في Firefox ، لذلك من الأفضل استخدام هذا. لا تزال قواعد LiveConnect تنطبق ، على الرغم من انخفاض التكنولوجيا.
نصائح أخرى
أفهم أن التطبيقات التي تم إطلاقها باستخدام JNLP لم تعد متاحة لـ JS ، لكنني قد أكون مخطئًا. للتحقيق في الأمر بشكل أكبر ، أوصي بإزالة Deployjava.js وترميز عنصر التطبيق.