اذهب إلى المحتوى

السؤال

نشر

تحية طيبة للجميع 

يمكننا تغيير ملف css من ملف جافاسكربت، بحيث أن المستخدم إذا ضغط على زر معين يتغير مسار href للملف فتتتغير إعدادت االموقع بناءا على المسار الجديد.

ولكن هل يمكننا فعل ذلك مع ملف جافاسكربت نفسه، بحيث أن ضغط زر ما يؤدي إلى تغيير مسار src لملف جافاسكربت ؟ حاولت ذلك كثيرا لكن العمل لم يتأثر.

مع أنه يمكننا توليد ملف جافاسكربت آخر ضمن كود جافاسكربت الذي يعمل عليه المتصفح، لكن هذا لا يكفي لأنني لا أستطع العودة (بضغط زر آخر مثلاً) إلى الأصل قبل ضغط الزر الأول.

Recommended Posts

  • 0
نشر

مثلا يمكننا تغيير ملف css:

button.onclick=function(){cssID.href="../css/file2.css"}

لكنني لم أستطع فعل ذلك مع ملف جافاسكربت، بتغيير href أو src أو url.

أما إعادة تحميل الصفحة فليس هو المطلوب لأن الفائدة المرجوة من تغيير ملف جافاسكربت هو عدم فتح صفحة جديدة بواسطة رابط مثلا، وذلك لهدف تسريع التنقل في المتصفح.

  • 1
نشر

باستخدام نفس الطريقة: 

على سبيل المثال، إذا كان هناك عنصر script مع src="../js/file1.js"، يمكن تغيير مساره عند الضغط على الزر كما يلي:

button.onclick = function() {
  const scriptElement = document.querySelector("script[src='../js/file1.js']");
  scriptElement.src = "../js/file2.js";
}

 الكود سيحدث تغييرًا في مسار العنصر script الذي يحتوي على المسار القديم "../js/file1.js"، وسيتم تغييره إلى المسار الجديد "../js/file2.js".

ويرجى الانتباه إلى أنه إذا كانت هناك وظيفة محددة تعمل بالفعل في الملف القديم، فلن يتم استدعاؤها بعد تغيير مسار العنصر script، لذلك قد تحتاج إلى إعادة تحميل الصفحة لتشغيل الوظيفة المحدثة.

ويمكنك أيضًا استخدام طريقة أحدث وهي باستخدام addEventListener للزر بدلاً من onclick.

  • 1
نشر

نعم، يمكن تغيير مسار src لملف جافاسكربت من ملف جافاسكربت آخر عن طريق إنشاء عنصر script جديد وتعيين مسار src الجديد له.

على سبيل المثال، يمكنك استخدام الكود التالي لتحميل ملف جافاسكربت جديد وتعيينه كملف جافاسكربت رئيسي:

var newScript = document.createElement('script');
newScript.src = 'new_script.js'; 
document.head.appendChild(newScript);

وعند الضغط على الزر المراد تعيينه لتحميل الملف الجديد، يمكنك استدعاء هذا الكود.

ومن المهم ملاحظة أنه إذا قمت بتحميل ملف جافاسكربت جديد، فإن الكود الذي يتم تنفيذه في الملف الأصلي لن يعمل بعد ذلك، إلا إذا تم استدعاءه من الملف الجديد أيضًا. وبالتالي، إذا كنت ترغب في العودة إلى الحالة الأصلية بعد ذلك، فيجب أن تعيد تحميل الملف الأصلي من جديد.

لإعادة تحميل الملف الأصلي، يمكنك استخدام نفس الطريقة التي استخدمتها لتحميل الملف الجديد، ولكن مع تغيير المسار إلى المسار الأصلي للملف الذي تريد إعادة تحميله.

على سبيل المثال، إذا كان ملف الجافاسكربت الأصلي يسمى original_script.js، يمكن استخدام الكود التالي لإعادة تحميله:

 

var originalScript = document.createElement('script');
originalScript.src = 'original_script.js'; 
document.head.appendChild(originalScript);

وسيتم تحميل الملف الأصلي مرة أخرى، وبالتالي سيتمكن الكود الذي يعمل فيه من العمل مرة أخرى كما كان يفعل في الأصل. ويمكن استدعاء هذا الكود عند الضغط على الزر المناسب للعودة إلى الحالة الأصلية.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...