سؤال

أنا أعمل على مشروع حيث نقوم باستخدام برنامج 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();
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top