موصى به: اجعل النافذة المنبثقة "مطيعًا" قليلاً ستظهر النوافذ المنبثقة عند إدخال بعض مواقع الويب أثناء تصفح الإنترنت. قد تكون تحية لطيفة من مشرف المواقع لك ، أو قد يكون إعلانًا مهمًا عن موقع الويب ، وإعلانات موقع الويب ، وما إلى ذلك ، ولكن إذا كنت تستخدمه بشكل سيء ، فسيجعل الناس يشعرون بالملل. كيفية جعل المنبثقة تعمل دون التأثير على التصفح
عندما تكتب تطبيقات من جانب الخادم باستخدام ASP ، يجب عليك الاعتماد على مكونات ActiveX لوظائف تطبيقات الويب القوية ، مثل: تحتاج إلى الاتصال بقاعدة البيانات ، وتشغيل قاعدة البيانات عبر الإنترنت ، إلخ.
1. مكونات قدرات المتصفح معروفة جيدًا ، وليس جميع المتصفحات تدعم جميع جوانب تكنولوجيا الإنترنت اليوم. هناك بعض الميزات التي تدعمها بعض المتصفحات ، لكن البعض الآخر لا ، مثل عناصر التحكم ActiveX ، ودفقات الصور ، وبرامج HTML الديناميكية ، والفلاش ، والبرمجة النصية. باستخدام مكون إمكانات المتصفح في ASP ، يمكنك تصميم صفحات الويب الذكية لتقديم المحتوى بتنسيق يناسب أداء المتصفح. يمكن لمكون قدرات المتصفح إنشاء كائن متصفح يوفر برامج نصية للمستخدم مع وصف وظيفي لمتصفح ويب العميل. السبب في أن هذا المكون يمكنه تحديد المعلومات مثل إصدار متصفح العميل هو أنه عندما يرسل متصفح العميل طلب صفحة إلى الخادم ، فإنه سيقوم تلقائيًا بإرسال عنوان HTTP وكيل المستخدم ، وهو سلسلة ASCII التي تعلن عن المتصفح وإصداره. يقوم مكون قدرات المتصفح بتعيين وكيل المستخدم إلى المتصفح الذي لوحظ في ملف prowscap.ini ويحدد متصفح العميل من خلال خصائص كائن المتصفح. إذا لم يتمكن الكائن من العثور على عنصر يطابق العنوان في ملف Browser.ini ، فسيتم استخدام خصائص المتصفح الافتراضية. إذا لم يحتوي الكائن على مطابقة تم العثور عليها وتم تحديد إعدادات المتصفح الافتراضية في ملف Browser.ini ، فإنه يقوم بتعيين كل خاصية على السلسلة غير معروفة. بشكل افتراضي ، يتم تخزين ملف Browser.ini في نظام التشغيل Windows ///////// inersrv (إذا كان 95/98 PWS4) أو NT /////////////////////////inersrv (إذا NT) دليل. يمكنك تحرير هذا الملف النصي بنفسك لإضافة خصائصك الخاصة أو تعديل الملف وفقًا لآخر ملف تحديث إصدار المستعرض. يرجى الاطلاع على عملية CheckCoOkie () التالية ، واستخدام سمة ملف تعريف الارتباط لكائن BrowserCap لتحديد ما إذا كان متصفح العميل يدعم ملفات تعريف الارتباط وإرجاع معلومات:
| ما يلي هو المحتوى المقتبس: <٪ Sub CheckCookie () تعيين browsercap = server.createBject (mswc.browsertype) إذا browsercap.cookie = صحيح ثم استجابة. اكتب متصفحك يدعم ملفات تعريف الارتباط! آخر الرد. اكتب آسف ، المستعرض الذي تستخدمه لا يدعم ملفات تعريف الارتباط! إنهاء إذا نهاية الفرعية ٪> |
2. مكون الوصول إلى الملف إذا كنت قديمًا بما يكفي في الشبكة ، يجب أن تكون قد شاهدت دفتر الزوار CGI في عصر الديناصورات ، وهو أول نموذج أولي من دفتر الزوار على الويب. في ذلك الوقت ، كان من الصعب للغاية الاتصال بقاعدة بيانات الخادم الخلفية في تطبيقات الويب المستندة إلى الإنترنت ، وبالتالي لم يتم تخزين المعلومات التاريخية في دفتر الزوار في قاعدة بيانات الواجهة الخلفية كما هي اليوم. إذن أين يتم تخزين هذه البيانات؟ الجواب هو ملف نصي. يمكن لبرنامج CGI كتابة المعلومات الواردة من العميل إلى ملف نصي مخزن على الخادم. يمكن أن يكون الملف ملف HTML أو ملف TXT ، والذي يسمح للمبرمجين بحفظ معلومات العميل دون الاتصال بنفس قاعدة البيانات. ومع ذلك ، فإن كتابة برامج CGI هذه مرهقة للغاية. القائمة التالية هي أبسط عينة من هذه البرامج:
| ما يلي هو المحتوى المقتبس: #!/usr/local/bin/perl # Perl موقع واحد الخادم الخاص بك طباعة المحتوى-النوع: نص/عادي //// n ///// n ؛ if ($ env {/// 'request_method ///'} eqpost) { read (stdin ، $ buffer ، $ env {/// 'content_length ///'}) ؛ } elsif ($ env {/// 'request_method ///'} eqget) { $ buffer = $ env {/// 'query_stirng ///'} ؛ } @pairs = split (/&/، $ buffer) ؛ foreach $ pair (pairs) { (اسم $ ، قيمة $) = split (/=/، $ pair) ؛ قيمة $ = ~ tr/// ؛ $ value = ~ s/٪ ([AF AF 0-9] [AF AF 0-9])/Pack (C ، Hex ($ 1))/EG ؛ $ form {$ name} = $ value ؛} $ file_name = neverbook.txt ؛ #file name #محتوى محدد افتح (ملف ، >> $ file_name) || خطأ في فتح الملف ؛ طباعة وقت تسجيل الملف: $ date //// n ///// n ؛ طباعة اسم الملف: $ form {/// 'name ///'} ؛ طباعة وحدة الملف: $ form {/// 'Company ///'} //// n ؛ اطبع هاتف ملف: $ نموذج {/// 'phone ///'} طباعة عنوان الملف: $ نموذج {/// 'العنوان ///'} //// n ؛ طباعة رمز zip الملف: $ نموذج {/// 'zip ///'} طباعة عنوان البريد الإلكتروني للملف: نموذج $ {/// 'البريد الإلكتروني ///'} //// n ؛ طباعة ملف إرجاع الملف: نموذج $ {/// 'content ///'} أغلق (ملف) |
يمكنك أن تشعر أنه بالمقارنة مع ASP ، فإن هذا النوع من برنامج CGI يكون أكثر فقراً في قابلية القراءة وقابلية التشغيل. ثم يجب أن ترغب في أن تسأل ما إذا كان بإمكان ASP أيضًا كتابة الملفات مباشرة على الخادم؟ الجواب بالطبع نعم. لكن قد يعتقد الأصدقاء الأذكياء أنه نظرًا لأن الاتصال بين ASP وقاعدة بيانات الويب مريحة للغاية ، فلماذا نحتاج إلى كتابة معلومات العميل في الملفات النصية؟ أليس هذه وظيفة ASP باهظة؟ في الواقع ، بالنسبة لتلك التطبيقات الشائعة على الويب مثل دفتر الزوار و BBS ، لا يمكننا استبدال قاعدة البيانات بكتابة ملفات نصية من حيث كفاءة تنفيذ البرنامج أو سهولة الاستخدام. ومع ذلك ، فإن كتابة الملفات النصية في بعض حقول تطبيقات الويب هي طريقة قياسية ومريحة نسبيًا مقارنة بقاعدة البيانات. إذا كنت على دراية بـ NT ، فيجب أن تعرف أن NT لديه آلية أمان قوية للغاية ، والتي يمكنها تلقائيًا حفظ جميع عمليات الخادم ومعلومات الاتصال تقريبًا في ملف باسم اللاحقة .log. في الواقع ، يمكن أيضًا استخدام هذه التكنولوجيا على الويب لتسجيل بعض معلومات تسجيل الدخول إلى العملاء. يستخدم البرنامج التالي ميزة قراءة ملفات ASP وكتابةها لإنشاء وظيفة تسجل تلقائيًا سجلات خطاب كل مستخدم في برنامج Web BBS.
| ما يلي هو المحتوى المقتبس: <٪ set fs = createObject (scripting.filesystemObject) Forreading = 1 /// 'افتح الملف في وضع القراءة فقط. لا يمكن كتابة هذا الملف. forappending = 8 /// 'افتح الملف واكتبه في نهاية الملف. tristateusedefault = -2 tristatetrue = -1 tristatefalse = 0/p> /// '--------------------------------------------------------------------------------------------------------------------- ServerMap = server.mappath (/// bbs /// log ////)) /// 'رسم الخرائط المسار المادي temp = servermap & /// & year (date) والشهر (التاريخ) و ////// /// 'احصل على المسار المادي والوقت ، واستخدم هذا كمسار فعلي مخزّن في ملف السجل إذا لم يكن fs.folderexists (درجة الحرارة) ثم fs.createfolder (درجة الحرارة) إنهاء إذا /// 'اكتشاف وجود مجلد ، وإلا سيتم إنشاؤه تلقائيًا قاتمة syslog قاتمة tempname tempname = التاريخ syslog = temp & tempname & .log /// 'اسم الملف هو e: ////bbs///log///month////nmonth.log li = user &&& الآن && request.servervariables (remote_addr) && tempfile &&&&S letter && title /// 'تنسيق سجل ملف السجل هو: اسم المستخدم وإرسال الوقت و IP ومسار الملف ومسار الحروف إذا كانت fs.filexists (syslog) ثم تعيين ss = fs.opentextFile (syslog ، forappending ، صواب) آخر تعيين ss = fs.createTextFile (syslog ، forwriting ، false) إنهاء إذا /// 'اكتشاف ما إذا كان ملف السجل موجودًا. إذا كان موجودًا ، أضف محتويات الملف ، وإلا اكتب الملف مباشرة Ss.Writeline (LI) Ss.Close /// '--------------------------------------------------------------------------------------------------------------------- ٪> |
إذا كنت لا تفهم البرنامج أعلاه تمامًا ، فيرجى الاستماع إلى تفسير المؤلف. يوفر مكون الوصول إلى الملف طرقًا وخصائصًا يمكن استخدامها للوصول إلى نظام ملفات الكمبيوتر. يمكننا استخدام مكون الوصول إلى الملف لإنشاء كائن fileSystemObject. تتمثل الجملة الأولى من البرنامج أعلاه في استخدام مكون الوصول إلى الملف لإنشاء مثيل كائن يسمى FS. بعد إنشاء الكائن ، يمكنك الوصول إلى الملف من خلاله. الكائن ليس له خصائص. المعنى الوحيد هو إنشاء الملفات النصية أو فتحها أو قراءة وكتابة. هناك طريقتان أكثر استخدامًا لكائن ملفات fileystemobject ، يتم استخدام واحدة لإنشاء الملفات ، والآخر يستخدم لفتح الملفات النصية وقراءة وكتابة. تحصل طريقة CreateTextFile على اسم الملف الذي حددته وإنشاء الملف. يعيد كائن TECSTSTEREM. يمكنك استخدام هذا الكائن لتشغيل الملف بعد إنشاء الملف. بناء الجملة لطريقة CreateTextFile هو كما يلي:
تعيين OBJTEXTSTREAM = fileystemObject.CreateTextFile (اسم الملف ، [الكتابة فوق] ، [Unicode])
سيشرح المؤلف معلمات طريقة CreateTextFile أدناه
1. اسم الملف سلسلة تحتوي على اسم مسار الملف يمكن أن يكون اسم المسار الكامل للملف ، بما في ذلك اسم محرك الأقراص واسم الدليل ، أو يمكن أن يكون مجرد اسم ملف. إذا تم تضمين اسم الملف فقط ، فسيتم إنشاء الملف في الدليل الجذر للموقع.
2. الكتابة فوق الكمية المنطقية. عند التعيين على خطأ ، يمكن أن يمنع كائن FileSystemObject من حذف الملفات الموجودة عند إنشاء ملف جديد. هذه المعلمة اختيارية. إذا لم يكن لدى النظام افتراضيات مهمة إلى TRUE ، فسيتم حذف الملفات الموجودة بنفس اسم الملف.
3. Unicode معلمات اختيارية. تشير القيم المنطقية إلى ما إذا كان سيتم إنشاء ملف بتنسيق ملف Unicode أو ASCII. تكون هذه القيمة صحيحة إذا تم إنشاء ملف بتنسيق ملف Unicode ، وكاذب إذا تم إنشاء ملف بتنسيق ملف ASCII. إذا تم حذف هذا القسم ، من المفترض أن يتم إنشاء ملف ASCII.
في البرنامج السابق ، نستخدم set ss = fs.createTextFile (syslog ، forwriting ، false) لإنشاء ملف وكتابة ملف عند عدم وجود ملف السجل. هنا ، يعني forwriting كتابة ملف.
على عكس طريقة CreateTextFile ، يتم استخدام طريقة OpentExtFile للحصول على اسم الملف الذي حددته وفتح الملف. باستخدام المعلمات التي تحتوي عليها ، يمكننا إجراء عمليات مختلفة على الملف. مثل طريقة CreateTextFile ، تقوم طريقة OpentExtFile بإرجاع كائن TextStream ، بحيث يمكنك تشغيل الملف بعد فتح الملف. بناء جملة طريقة OpentExtFile هو كما يلي:
تعيين OBJTEXTSTREAM = fileystemObject.OpentExtFile (اسم الملف ، [iomode] ، [Create] ، [Format])
المعلمات كما يلي:
1. اسم الملف هو المتغير اللازم ، مثل اسم ملف CreateTextFile
2. IOMODE ثابت اختياري ، مع القيمة كواحدة من الثوابت التاليةان على reerreading أو forappending. إذا كان الوضع 1 ، يتم فتح الملف للقراءة فقط ، وإذا كان 8 ، يتم فتح الملف.
3. إنشاء كمية منطقية اختيارية ، تحديد العملية التي يتم إجراؤها إذا كان الملف الذي تريد فتحه غير موجود. إذا كانت قيمتها صحيحة ، فسيتم إنشاء ملف فارغ تلقائيًا عند عدم وجود الملف. إذا كان خطأ ، سيتم إنشاء رسالة خطأ عند عدم العثور على الملف. القيمة الافتراضية خاطئة. يوصى بتعيينه على True لتجنب التحقق من الأخطاء عند فتح الملف.
4. تنسيق القيمة الاختيارية ، يمكنك تحديد ثلاث قيم تريستات لتحديد تنسيق الملف ، على التوالي. -2 و -1 و 0 يتوافق مع النظام الافتراضي ، Unicode و ASCII ، على التوالي.
بعد فتح أو إنشاء ملف نصي ، يمكنك الحصول على كائن TextStream ، الذي يحتوي على مؤشر ، تمامًا مثل المؤشر في معالج النصوص ، مما يشير إلى مكان ظهور الحرف الذي ستكتبه ، ويشير أيضًا إلى موضع الحرف الذي ستقرأه. لا يمكنك إنشاء كائن TextStream من خلال CreatoBject. الطريقة الوحيدة للحصول على كائن TextStream هي استخدام كائن FileSystemObject لفتح ملف نصي موجود أو إنشاء ملف جديد كما هو موضح سابقًا.
يتم سرد خصائص وطرق كائن TextStream أدناه
textstream.atendofline الكمية المنطقية للقراءة فقط ، عندما يكون المؤشر في نهاية السطر الحالي ، فإن قيمته صحيحة ، وإلا فهي خاطئة
textstream.atendofstream الكمية المنطقية للقراءة فقط ، إذا كان المؤشر في نهاية الدفق ، فإن قيمته صحيحة ، وإلا فهي خاطئة
exctstream.column read-on-only integer ، وحساب عدد الأحرف من بداية السطر إلى موضع المؤشر الحالي
TECSTSTREAM.Line عدد صحيح القراءة فقط يشير إلى رقم سطر خط المؤشر في الملف بأكمله
textstream.close () أغلق الدفق والملف النصي المقابل
يحدد TextStream.Read (NUM) أنه يتم قراءة عدد معين من الأحرف من الملف النصي الذي يبدأ من الموضع الحالي للمؤشر.
يقرأ TextStream.Readall () الدفق بأكمله في سلسلة
يقرأ TextStream.ReadLine () مجموعة كاملة من الأحرف في سلسلة
textstream.write (نص) اكتب سلسلة إلى الدفق
TextStream.Writeline () يكتب سلسلة نصية إلى الدفق
textstream.skip (num) في دفق ، حرك موضع المؤشر بعدد معين من أطوال السلسلة
textstream.skiplines () في تيار ، حرك المؤشر إلى عدد معين من الصفوف
TextStream.WriteBlank يكتب عددًا معينًا من الخطوط الفارغة إلى الدفق
خطوط (NUM)
أعتقد أن الجميع يمكن أن يشعروا الآن بالوظائف القوية لمكون الوصول إلى ملف ASP. في الواقع ، لا يمكن أن تكتب فقط بعض ملفات السجل ، ولكن أيضًا تحديث موقع الويب الخاص بك تلقائيًا دون جهد. تحتاج فقط إلى نقل الملف النصي بتنسيق ثابت إلى الخادم البعيد ، وقراءة الملف من خلال مكون الوصول إلى الملف ، وإنشاء صفحة HTML جديدة تلقائيًا ، دون الحاجة إلى العمل بجد لتحديث ملفات HTML واحدة تلو الأخرى. إذا كنت مهتمًا ، فيمكنك استخدام مكون الوصول إلى ملف ASP لكتابة مولد HTML التلقائي بالكامل للاستمتاع تمامًا بالشعور المتقدم والسهل بالحفاظ على موقع الويب.
مشاركة: JS Div يحاكي مجال تحديد النموذج لقد كنت أعمل مؤخرًا على مشروع Ajax ، الذي يستخدم العديد من أقفال الشاشة المحاكاة بطبقة ملء الشاشة ، ولكن هناك صداع ، أي أن مربع القائمة المنسدلة سيتم عرضه دائمًا على الطبقة. كتبت فئة JS هذه لحل هذه المشكلة. أنا شخصياً أشعر أنه من السهل الاستخدام. سوف أشاركها معك هنا.