1. الاستفادة من المتغيرات العالمية
هذه هي أسهل طريقة ، مثل Google Adsense:
نسخة الكود كما يلي:
<script type = "text/javaScript"> google_ad_client = 'pub-3741595817388494' ؛ </script> <script type = "text/javaScript" src = "http: // pagead2. googlesyndication.com/pagead/show_ads.js"> </script>
العيب هو أنه يتم تقديم المتغيرات العالمية. هناك نوعان آخران من الطريق لإدخال الملفات:
// variation 1: استخدم المستند. الكتابة للإخراج <script type = "text/javaScript"> google_ga_id = 'g6u7un8646xx' ؛ document.write (unescape ('٪ 3cscript type = "text/javaScript" src = "http://www.google-analytics.com/ga.js"٪3e٪3c/script٪3e')) ؛ </script> // variation 2: استخدم DOM لتطبيقه على الرأس <script type = "text/javaScript"> g_beacon_atp = 'category = & userid = & channel = 112ad_id =' ؛ document.getElementsByTagName ('head') [0] .appendChild (وثيقة. createElement ('script')) .src = 'http: //taobao.com/atp.js' ؛ </script> // ملاحظة: الرمز أعلاه هو رمز عرض افتراضي يعتمد على التطبيق الفعليملاحظة: يتم استخدام التنوع 1 عدة مرات ، وطرق الكتابة المشتركة هي كما يلي:
<script type = "text/javaScript"> // Escape مباشرة: 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 وحوض SRC لعنصر البرنامج النصي
بالمقارنة مع جميع المتغيرات ، نفضل تمرير المعلمات مثل ما يلي:
<script type = "text/javaScript" src = "test.js؟ a = b & c = d"> </script>
المشكلة الأساسية هي كيفية الحصول على سمة SRC.
الطريقة الأولى هي إضافة سمة معرف إلى البرنامج النصي ، والحصول على البرنامج النصي الحالي من خلال المعرف ، ثم استخدم منتظمًا لإزالة المعلمات من SRC. العيب هو أنه في مواصفات HTML 4.01 ، لا يحتوي عنصر البرنامج النصي على سمة معرف. لا يمكن اعتبار هذا القصور عيبًا ، بعد كل شيء ، من الأفضل ألا يكون لديك معايير من الاعتقاد بالمعايير.
الطريقة الثانية هي استخدام اسم ملف JS كخطاف. بعد تمرير document.getElementsByTagName ('Script') في رمز JS ، سيتم مطابقة ملف JS الحالي بانتظام. هذه الطريقة أرثوذكسية ، ولكنها تتطلب اسم ملف فريد. العيب هو أن هناك الكثير من التعليمات البرمجية ولا يتم تكريرها ، والتي سيكون لها تأثير بسيط على الأداء.
الطريقة 3 هي إضافة بيانات سمة مخصصة بناءً على الطريقة 1:
<script id = "testscript" type = "text/javaScript" src = "test.js" data = "a = b & c = d"> </script>
في ملف test.js ، استخدم السطر التالي للحصول على المعلمات التي تم تمريرها:
var scriptArgs = document.getElementById ('testScript'). getAttribute ('data') ؛ تتمثل الطريقة 4 في استخدام آلية التنفيذ المتسلسلة لـ JS (يمكن أن يكون تحميل ملفات JS متزامنة أو غير متزامنة ، ولكن عند التنفيذ ، يجب تنفيذها بالترتيب في دفق المستند). عند تنفيذ ملف JS معين ، يجب أن يكون آخر ملف في ملف JS "المحمّل":
var scripts = document.getElementsByTagName ('script') ؛ var currentscript = scripts [scripts.length - 1] ؛ الطريقة 4 أكثر ذكاءً وعبقرية من الطريقة 2.
من منظور تبسيط الكود والأداء ، الطريقة 3> الطريقة 1> الطريقة 4> الطريقة 2
ملخص: إذا كنت تهتم بالمعايير كثيراً ، أوصي الطريقة 4 ؛ إذا شعرت أنه ليس من الضروري الامتثال الكامل للمعايير مثلي ، أوصي الطريقة 3.
اكتب برنامج اختبار
<! doctype html> <html> <script src = "a2.js"> </script> <script src = "a2.js"> </script> <script src = "a2.js"> </script> <script src = "a2.js"> </script
A2.JS
var scripts = document.getElementsByTagName ('script') ؛ var currentscript = scripts.length ؛ Alert (currentscript) ؛
طباعة بشكل منفصل
1 2 3
3. خطة الإلهام
إذا كنت معجبي جون ريجغ مثلي ، فربما لا تزال تتذكر "علامات السيناريو المهينة" التي تمت مناقشتها كثيرًا في أغسطس الماضي. جون ريج يفتح باب وهمي بالنسبة لنا. بالنسبة للأسئلة الواردة في هذه المقالة ، يمكننا أيضًا استخدام "المسارات الشريرة" التالية لتحقيقها:
<script type = "text/javaScript" src = "test.js"> tb.someapp.scriptargs = 'a = b & c = d' ؛ </script>
في ملف test.js:
tb = {} ؛ tb.someapp = {} ؛ 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>
في ملف JS:
var scripts = document.getElementsByTagName ("script") ؛ var scriptArgs = scripts [scripts.length - 1] .innerhtml.replace (/[s]/g ، '') ؛الخيال لا نهاية له ، يمكنك أيضًا استخدام Onload:
<script type = "text/javaScript" src = "test.js" onload = "tb.somefun ('a = b & c = d')"> </script>
فقط حدد الوظيفة في ملف JS:
tb = {} ؛ tb.somefun = function (arg) {// code} ؛يمكن تشغيل الرمز أعلاه بشكل صحيح في المتصفحات غير IE. من أجل الغباء ، عليك إضافة بضعة أسطر من التعليمات البرمجية:
if (window.activexObject) {var scripts = document.getElementSbyTagName ('script') ؛ eval (scripts [scripts.length - 1] .getAttribute ('Onload')) ؛}