مسج تطبيقات جافا
-
09-06-2019 - |
سؤال
أنا أعمل على مشروع حيث نقوم باستخدام برنامج Java على جزء من واجهة المستخدم (خريطة, على وجه التحديد) ، ولكن بناء بقية واجهة المستخدم حول الصغير في HTML/جافا سكريبت, التواصل مع برنامج من خلال LiveConnect/NPAPI.غريب قليلا, أعرف, ولكن دعونا نفترض أن الإعداد هو قيد المناقشة.بدأت تخطط باستخدام مسج بلدي جافا سكريبت الإطار ، ولكن واجهتني المسألتين.
المسألة الأولى:
اختيار الصغير لا توفر الوصول إلى الصغير أساليب.
جافا:
public class MyApplet extends JApplet {
// ...
public String foo() { return "foo!"; }
}
جافا سكريبت:
var applet = $("#applet-id");
alert(applet.foo());
تشغيل أعلاه جافا سكريبت النتائج في
$("#applet-id").foo is not a function
هذا هو على النقيض من النموذج ، حيث يماثل قانون العمل:
var applet = $("applet-id");
alert(applet.foo());
لذا أين الصغير أساليب تذهب ؟
المسألة الثانية:
هناك مشكلة معروفة مع مسج و تطبيقات في فايرفوكس 2: http://www.pengoworks.com/workshop/jquery/bug_applet/jquery_applet_bug.htm
إنه طريق طويل ولكن لا أحد يعرف من الحل?وأظن أن هذه المشكلة لا يمكن حلها ، مما يعني التحول إلى النموذج.
شكرا للمساعدة!
المحلول
عن المسألة الأولى ، ماذا عن محاولة
alert( $("#applet-id")[0].foo() );
بالنسبة للمسألة الثانية هنا الموضوع مع إمكانية الحل.
نقلا عن الحل
// Prevent memory leaks in IE // And prevent errors on refresh with events like mouseover in other browsers // Window isn't included so as not to unbind existing unload events jQuery(window).bind("unload", function() { jQuery("*").add(document).unbind(); });
تغيير التعليمات البرمجية إلى:
// Window isn't included so as not to unbind existing unload events jQuery(window).bind("unload", function() { jQuery("*:not('applet, object')").add(document).unbind(); });