أقوم حاليًا بتطوير نص JavaScript يتم تشغيله على صفحة الإدارة. قرأت عن التغييرات التي تم إجراؤها في Drupal 7 ، وهي الانتقال من document.ready()
إلى وظيفة jQuery الخاصة بها. ومع ذلك ، لا يعمل البرنامج النصي التالي.
(function ($) {
console.log('hello');
$('#edit-apiusername').append('test');
})(jQuery);
console.log()
قيد التشغيل ويمكنني رؤية الإخراج ، ولكن الملحق البسيط لا يعمل. معرف الحقل صحيح.
لست متأكدًا مما أفقده هنا ، لكني أشك في أن له علاقة بالطريقة التي أشير بها إلى الشيء. بالنظر إلى كود JavaScript 3 المشاهدات ، أستطيع أن أرى أنه تم بطريقة مماثلة.
أعتقد أنك أسأت فهم التغييرات.
يجب تغليف شفرة جافا سكريبت في (function ($) { ... })(jQuery);
للسماح باستخدام $
كاختصار لـ jQuery
. هذا للسماح jQuery للعب بشكل جيد مع مكتبات أخرى . في هذه الوظيفة ، لا يزال عليك الانتظار حتى يتم تحميل DOM إذا كنت تريد تغييره. هذا ما يفعله التفاف التعليمات البرمجية في jQuery.ready(function(){ ... })
.
ولكن بدلاً من استخدام jQuery.ready(function(){ ... })
، يجب عليك استخدام السلوكيات للسماح لجافا سكريبت في دروبال بأن رمزك يريد معالجة أي شيء تمت إضافته ( أو تمت إزالته ) من DOM .
(function ($) {
Drupal.behaviors.exampleModule = {
attach: function(context, settings) {
$(context).find('#edit-apiusername').append('test');
}
}
})(jQuery);
قد تفكر أيضًا في اسم مستعار لكائن jQuery بالكامل إلى متغير آخر من اختيارك ، كما في:
$j = jQuery.noConflict();
ستضع هذا خارج البيان الجاهز لتتركه متاحًا خارج التغليف.