Yipin Sky Web Development Code Station ASP ومدونات مجموعة الأكواد الكلاسيكية الأخرى المتعلقة بتطوير الويب - اتصالات ASP مجموعة QQ 12814238 (كاملة) 14725152 (مفتوحة) الصفحة الرئيسية إعادة بناء ASPJS/AJAX وتحسينها، مجموعة قواعد بيانات الأكواد الشاملة ومشاركة نظام التشغيل الترفيهي الصوتي والمرئي المقال السابق |. التالي مقال JS/AJAX
كيفية تمرير المعلمات إلى ملفات JavaScript في JavaScript المؤلف: Yipin التاريخ: 2009-03-23
حجم الخط: صغير، متوسط،
كبير
. هذه هي أبسط طريقة لاستخدام المتغيرات العامة، مثل Google Adsense:
رمز البرنامج
<نوع البرنامج النصي = "نص/جافا سكريبت">
google_ad_client = 'pub-3741595817388494';
</script>
<script type="text/javascript" src=" http://pagead2 .
googlesyndication.com/pagead/show_ads.js"></script>
العيب هو أنه يتم إدخال المتغيرات العالمية. هناك نوعان مختلفان حول كيفية تقديم الملفات:
رمز البرنامج
// البديل 1: استخدم document.write للإخراج
<نوع البرنامج النصي = "نص/جافا سكريبت">
google_ga_id = 'g6u7un8646xx';
document.write(unescape('%3Cscript type="text/javascript" src=
" http://www.google-analytics.com/ga.js"%3E%3C/script%3E' ));
</script>
رمز البرنامج
// الإصدار 2: استخدم عملية DOM للإلحاق بالرأس
<نوع البرنامج النصي = "نص/جافا سكريبت">
G_BEACON_ATP = 'category=&userid=&channel=112ad_id=';
document.getElementsByTagName('head')[0].appendChild(document.
createElement('script')).src='http://taobao.com/atp.js';
</script>
ملاحظة: الكود أعلاه عبارة عن كود توضيحي افتراضي يعتمد على التطبيق الفعلي
. ملاحظة: يتم استخدام البديل 1 في العديد من التطبيقات كما يلي:
رمز البرنامج
<نوع البرنامج النصي = "نص/جافا سكريبت">
// مجرد الهروب مباشرة:
document.write('<script type="text/javascript" src="test.js"></script>');
// أو قم بالإعجاب بصفحة Yahoo!
document.write('<scr' + 'ipt type="text/javascript" src="test.js"></scr' + 'ipt>');
</script>
2.
بالمقارنة مع الحصول على src لعنصر البرنامج النصي وجميع المتغيرات وتحليلها، فإننا نفضل تمرير المعلمات على النحو التالي:
رمز البرنامج
<script type="text/javascript" src="test.js?a=b&c=d"></script>
المشكلة الأساسية هي كيفية الحصول على سمة src.
الطريقة الأولى هي إضافة سمة المعرف إلى البرنامج النصي، والحصول على البرنامج النصي الحالي من خلال المعرف، ثم استخدام التعبيرات العادية لاستخراج المعلمات من src. العيب هو أنه في مواصفات HTML 4.01، لا يحتوي عنصر البرنامج النصي على سمة معرف. وهذا النقص ليس عيبًا، ففي نهاية المطاف، من الأفضل أن نؤمن بالمعايير بدلاً من عدم وجود معايير.
الطريقة الثانية هي استخدام اسم ملف js كخطاف. بعد تمرير document.getElementsByTagName('script') في كود js، تتم مطابقة ملف js الحالي بالقواعد العادية. هذه الطريقة تقليدية جدًا، ولكنها تتطلب اسم ملف فريدًا. العيب هو أن هناك الكثير من التعليمات البرمجية، ولم يتم تنقيحها، ولها تأثير طفيف على الأداء.
الطريقة الثالثة هي ببساطة إضافة بيانات سمة مخصصة بناءً على الطريقة الأولى:
رمز البرنامج
<script id="testScript" type="text/javascript" src="test.js" data="a=b&c=d"></script>
في ملف test.js، يتم الحصول على المعلمات التي تم تمريرها من خلال السطر التالي:
رمز البرنامج
var scriptArgs = document.getElementById('testScript').getAttribute('data');
الطريقة الرابعة هي استخدام آلية التنفيذ التسلسلي لـ js (يمكن تحميل ملف js بشكل متزامن أو غير متزامن، ولكن عند التنفيذ، يجب تنفيذه بالترتيب في تدفق المستند). عند تنفيذ ملف js، يجب أن يكون هو الأخير بين ملفات js "المحملة":
رمز البرنامج
var scripts = document.getElementsByTagName('script');
var currentScript = scripts[scripts.length - 1];
الطريقة الرابعة أكثر براعة وعبقرية من الطريقة الثانية.
فيما يتعلق بتبسيط التعليمات البرمجية والأداء، الطريقة 3> الطريقة 1> الطريقة 4>
ملخص الطريقة 2: إذا كنت مهتمًا بالمعايير، أوصي بالطريقة 4 إذا كنت تشعر مثلي أنه ليس من الضروري الالتزام الكامل بالمعايير والطريقة 3 موصى به.
3. خطة الإلهام إذا كنت من المعجبين المخلصين لجون ريسيج مثلي، فربما لا تزال تتذكر "علامات النص المهينة" التي تمت مناقشتها كثيرًا في أغسطس من العام الماضي. لقد فتح لنا جون ريسيج باب الخيال بالنسبة لمشكلة هذه المقالة، ويمكن أيضًا استخدام "الطرق الشريرة" التالية لتحقيقها:
رمز البرنامج
<script type="text/javascript" src="test.js">
TB.SomeApp.scriptArgs = 'a=b&c=d';
</script>
في ملف test.js:
رمز البرنامج
TB = {};
var scripts = document.getElementsByTagName("script");
eval(scripts[scripts.length - 1].innerHTML);
يؤدي هذا إلى تخزين المعلمات في المتغير TB.SomeApp.scriptArgs.
عندما لا يكون هناك العديد من المعلمات، يمكنك حتى القيام بذلك:
رمز البرنامج
<script type="text/javascript" src="test.js">a=b&c=d</script>
ملف جي إس:
رمز البرنامج
var scripts = document.getElementsByTagName("script");
var scriptArgs = scripts[ scripts. length - 1 ].innerHTML.replace(/[s]/g, '');
الخيال لا نهاية له، يمكنك أيضًا استخدام التحميل:
رمز البرنامج
<script type="text/javascript" src="test.js" xxxxx="TB.SomeFun('a=b&c=d')"></script>
ما عليك سوى تحديد الوظيفة في ملف js:
رمز البرنامج
السل = {}؛
TB.SomeFun = function(arg) { //code };
يمكن تشغيل الكود أعلاه بشكل صحيح ضمن متصفحات غير IE. بالنسبة للغباء، يجب عليك إضافة بضعة أسطر من التعليمات البرمجية:
رمز البرنامج
إذا (window.ActiveXObject) {
var scripts = document.getElementsByTagName('script');
eval(scripts[scripts.length - 1].getAttribute('onload'));
}
وطالما أننا نواصل المضي قدمًا بروح التنقيب، أعتقد أنه سيكون هناك المزيد من الحلول الملهمة. -
بعد تلخيص الحلول المذكورة أعلاه، ما هو الحل الأفضل؟ جوابي هو: ليس هناك الأفضل، فقط الأنسب! لأنه بالنسبة للتطبيقات المختلفة والمفاهيم المختلفة، فإن تعريف "الخير" يختلف.
على سبيل المثال، فلسفتي الحالية هي أنه ليس من الضروري الالتزام الكامل بالمعايير. أما بالنسبة للمتغيرات العالمية، فإن ما نحتاج إلى تجنبه هو إساءة الاستخدام، وليس الاستخدام. ولذلك، سأختار الحل المتغير الشامل، وهو الأبسط والأفضل أداء.