javascript - معلم - مميزات الجافا سكريبت




تمرير وظيفة جافا سكريبت من خلال سمات البيانات المضمنة (2)

أنا أعمل مع مكتبة تحميل ملفات جافا سكريبت، وأحد ميزاته هو أنه يستخدم HTML5 سمات البيانات المضمنة لتمرير المعلومات إلى المكون الإضافي.

هذا يعمل كبيرة لأي شيء البيانات ذات الصلة، سلاسل، أرقام الخ، ولكن البرنامج المساعد لديه بعض أساليب الاستدعاء يمكنك تعيين وظيفة ل. مشكلتي هي أنه عند محاولة تمرير وظيفة جافا سكريبت من خلال سمات البيانات المضمنة، مثل هذا:

<input type="file" name="test" data-on-finish="alert();">

البرنامج المساعد تلتقط إشارة إلى أونفينيش () أسلوب استدعاء غرامة، ولكن عندما يحاول تنفيذ أي جافاسكريبت أضع في هناك أحصل على الخطأ:

Uncaught TypeError: Object alert(); has no method 'call' 

أنا أفترض انها قراءة alert(); كسلسلة. أي فكرة كيف يمكن أن تمر عبر جافا سكريبت القابل للتنفيذ إلى البرنامج المساعد؟

وأعتقد أن البرنامج المساعد الذي أستخدمه هو امتداد إلى البرنامج المساعد تحميل ملف مسج: https://github.com/blueimp/jQuery-File-Upload/wiki/Options

تحديث: لقد حاولت أيضا استخدام وظائف محددة عالميا، مثل هذا:

<script type="text/javascript">
    function myTesting(){
       alert('yay');
    }
</script>
<input type="file" name="test" data-on-finish="myTesting">

لقد حاولت تغيير سمة data-on-finish إلى myTesting ، myTesting() ، لا يزال لا حظ ...


استخدم شيئا من هذا القبيل:

$(function() {
  function test() {
    alert("ok");
  }

  $(".test").data("test", test);
  $(".test").data("test")();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<div class="test">
</div>


لماذا لا تضع اسم الرد بدلا من ذلك؟ شيء مثل

//for example, a global function
window['someFunctionName'].call();

//a namespaced function
//similar to doing ns.someFunctionName()
ns['someFunctionName'].call();




callback