تشترك هذه المقالة في بعض أساليب JS الأكثر عملية التي جمعتها في الحياة اليومية لتوجيهاتك وتقييمك. أريد أن أقدمها في مقالات مختلفة ، لكنني وجدت أنها إضافية قليلاً. لقد قمت بفرز الأساليب ولكن ليس لدي العديد من الطرق لإظهارها. بالطبع ، بعضها طرق رأيتها على الإنترنت أعتقد أنها عملية للغاية. سأقوم بنشرهم هنا حتى يناقش الجميع.
1. انقر للإرجاع إذا لم تكن هناك صفحة سابقة ، ثم اقفز إلى الصفحة المحددة.
بادئ ذي بدء ، فإن متطلبات احتياجات العميل - صفحة واحدة مشتركة إلى WeChat ، انقر للعودة إلى القفز إلى الصفحة الرئيسية للموقع.
خلال هذه الفترة ، تمت مناقشة هذه الوظيفة مع العملاء. هل يمكنك إضافة الزر إلى الصفحة الرئيسية للقفز إلى الصفحة؟
ومع ذلك ، لا يمكن أن تعمل هذه الطريقة في كل صفحة ، وتشير إلى أن صفحة المشاركة التي تتطلب هذه الوظيفة لا تحتوي على الرمز التالي ، ولا تؤثر على الجمال. لذلك ، اضطررت للبحث عن تريب. الكلب مليء أيضًا بالوظائف التي تلعب كرات الحافة.
لذلك من خلال محاولتي الخاصة ، لدي الرمز التالي:
// العودة إلى الصفحة الرئيسية بدون صفحة من قبل ، ارجع إلى Pushhistory () {// احصل على عدد السجلات في حصة سجل المتصفح // لأن الصفحة الحالية يتم دفعها إلى المكدس عند تحميل الصفحة ، تحدد ما إذا كان أقل من 2 إذا كان (History.Length <2) {var state = {title: "url: url: getttprefix +" window.history.pushState (State ، "INDEX" ، GethTPrefix + "index.html") ؛ State = {title: "index" ، url: ""} ؛ window.history.pushState (State ، "INDEX" ، "") ؛ }}ثم أضف الرمز التالي إلى الحدث الجاهز في الصفحة:
setTimeOut (function () {pushhistory () window.addeventListener ("popstate" ، function (e) {5 if (window.history.state! = null && window.history.state.url! = "")الوظيفة المحددة هي تحديد ما إذا كانت هناك صفحة من قبل. إذا لم يكن الأمر كذلك ، أدخل عنوان رابط الموقع في الحالة (يتم استخدام الصفحة الرئيسية هنا) ، ثم استمع إلى حدث PopState لتنفيذ تشغيل الوظيفة المقابلة.
قد تكون هناك بعض المشكلات البسيطة في هذا الرمز ، لذلك أخطط لنشره ويمكن لشخص ما مناقشته وتحسينه معًا.
2. طريقة تسجيل مريحة
أعتقد أن الجميع قد سئم بالفعل من Console.log () طول مطوّل قليلاً عند تصحيح الصفحة. قد يستخدم بعض الأشخاص مدخلات الاختصار لإجراء مدخلات سريعة (مثل بيئة مجموعة CL CL القفز بذكاء من وحدة التحكم). ومع ذلك ، عندما يتم إصدار المشروع ، سيظل من الصعب توضيحه. لذلك كتبت ببساطة طريقة للتعامل مع هذا الموقف على وجه التحديد.
الدالة lll () {// متغير عالمي _debug يستخدم للتحكم في مفتاح معلومات التصحيح إذا كان (_debug) {var arr = [] ؛ // الوسيطات هي مجموعة الأساليب المعلمة. يتم ذلك للحد من عدد المعلمات ، وتسهيل تصحيح الأخطاء لـ (_ITEM في الوسيطات) {// لأن العادات الشخصية التي يتم عرض معلومات السلسلة في سطر ، يتم ترشيح السلسلة وتراجعها إذا (typeof _item == "string") {arr.push (_item)} {console.log ( if (arr.length> 0) console.log (arr.join ('،'))}}في الواقع ، أنا غير راضٍ قليلاً عن أنني لا أستطيع الحصول على اسم المعلمة تلقائيًا ، وإلا يمكنني استخدامها مثل هذا:
var a = 123 ، b = 333 ، obj = {name: "name" ، المحتوى: "..."} lll (a ، b ، obj) // معلومات التصحيح هي: a: 123 ، b: 123 // obj: // {name:هل يبدو أنك تفهم أكثر؟
3. الحصول على معلومات تحديد موقع المتصفح (يدعم محطة الهاتف المحمول)
العديد من المشاريع التي تلقيتها هي تطوير مخصص على الهاتف المحمول ، لذلك غالبًا ما يتم استخدام المعلومات التي تتطلب تحديد الموقع الحالي.
ومع ذلك ، تحتاج العديد من الواجهات على الإنترنت إلى الرجوع إلى قسم JS خارجي ، مثل API من BAIDU ، واجهة برمجة تطبيقات WeChat ، إلخ.
بعد ذلك ، سأقدم طريقة لا تتطلب إشارة إلى JS الخارجي ، ولكن لا يحتاج إلا إلى إرسال معلمات إلى روابط API الخارجية للحصول على موقع:
إذا كان (getCookie ('position') == "") {if (navigator.useragent.indexof ("micromessenger")> -1) {// html5 (محطة الهاتف المحمول هي الأكثر دقة ، وسيكون للكمبيوتر الشخص انحراف كبير) var lat = position.coords.latitude ؛ // الحصول على خط العرض الحالي var lng = position.coords.longitude ؛ "http://api.map.baidu.com/geocoder/v2/؟ak=om55dvWvWluU7shkz7uy8m6e&callback=renderrevers Be ForresEnd: function () {// بما أن هذه العملية تستغرق بعض الوقت ، فمن الأفضل أن يكون لديك موجه تحميل على الصفحة iOSLoad () // تحميل الصفحة الرسوم المتحركة التي كتبتها} ، البيانات: {} ، datatype: "jsonp" ، // لأنها عبارة يتطلب جهاز الاستقبال والمرسل للنجاح الموحد: الدالة (البيانات) {ios.hide () ؛ //alert(error.message) ؛هذا الرمز هو جزء من الرمز في مشروعي الفعلي. نظرًا لأنني بحاجة إلى تحديد ما إذا كان قد تم الحصول على معلومات الاستهداف ، لا يمكنني الحصول عليها مرة واحدة في كل مرة يتم فيها تحميل الصفحة ، لذلك قمت بحفظ معلومات الاستهداف باستخدام ملفات تعريف الارتباط.
في البداية ، نحدد ما إذا كان هناك ملف تعريف ارتباط حالي لتحديد المواقع ، ولكن لا يوجد. ثم حدد ما إذا كان على محطة الهاتف المحمول (لأن المشروع من محطة WeChat ، لقد قمت فقط بالتحقق من محطة WeChat هنا)
ثم اتصل بمعلمات الواجهة التي توفرها HTML5 لنقل البيانات ، ويتم معالجة JSONP من BAIDU. نظرًا لأن مشروعي يحتاج فقط إلى الحصول على معلومات مدينة الموقع ، فأنا أقدم فقط مثالًا على الحصول على المدن.
4. احصل على الجزء العددي من السلسلة
لأنني مسؤول فقط عن تنفيذ الوظائف في المشروع ، لا أقوم ببناء العديد من الصفحات بنفسي ، لكنني سأخلق أيضًا بعض المواقف الصعبة التي يصعب الحصول عليها القيم في العلامة.
على سبيل المثال:
<Div> السعر الأصلي لـ 998 هو الآن <a> 99.8! </a> </viv>
بالنسبة لصفحات كهذه ، تحتاج أحيانًا إلى الحصول على 998 أو 98. سوف تصبح مزعجة بعض الشيء.
من خلال الطريقة التي أقدمها أدناه ، يمكن حل هذا الموقف بسهولة
وظيفة getNum (text) {var value = text.replace (/[^(0-9).]/ig ، "") ؛ إرجاع parsefloat (القيمة) ؛ }هذه الطريقة قصيرة جدًا ، وهي مطابقة بشكل أساسي من خلال الانتظام. استبدل الأحرف التي لا ترقم أو نقاط عشرية بسلاسل فارغة (تم حذفها بالفعل)
البيانات التي تم إرجاعها بهذه الطريقة هي الرقم الذي نريده. لقد قمت بتحويلها أخيرًا إلى عملية عائمة ، والتي تتمثل في تسهيل معالجة البيانات بعد المعالجة. على سبيل المثال ، احتفظ بمكانين عشريين ، حولهما ، إلخ.
5. الحصول على معلومات الجهاز
//#المنطقة الحصول على معلومات الجهاز var browser = {reports: function () {var u = navigator.useragent ، app = navigator.appversion ؛ return {trident: u.indexof ('trident')> -1 ، // ie kernel presto: u.indexof ('presto')> -1 ، // opera kernel webkit: u.indexof ('AppleWebkit')> -1 ، // Apple and Google kernel gecko: U.Indexof ('gecko')> -1 & chtm. -1 ، // firefox kernel mobile: !! // Android Terminal أو UC Browser iPhone: U.Indexof ('iPhone')> -1 ، // هل هو iPhone أو QQHD Browser iPad: U.Indexof ('iPad')> -1 ، // هل هو iPad WebApp: U.Indexof ('Safari') == -1 ، // -1 ، // ما إذا كانت WeChat (تمت إضافتها حديثًا في 2015-01-22) QQ: U.Match (// sqq/i) == "qq" // سواء كان QQ} ؛ // رمز تم تنفيذه لـ Apple و Google Kernel ...} //#endregionفيما يلي أيضًا طريقة للحكم على معلومات الجهاز التي كتبتها ورأيتها على الإنترنت.
أنا شخصياً أعتقد أنه مفيد للغاية ، لذلك سأشاركه معك.
طريقة تمديد السلسلة-ما يلي هي طرق لإلحاق بيانات نوع السلسلة
1. إخفاء جزء السلسلة وراء الطول المحدد
/*أظهر السلسلة بطول محدد ، ويتم عرض الفائض في ellipses (len-reashwens levaultStr-سلسلة إذا كانت السلسلة فارغة)*/string.prototype.splitstring = function (len ، defaultStr) {var result = "" ؛ var str = this.toString () if (str) {str = str.trim () if (str.length> len) {result = str.substring (0 ، len) + "..." ؛ } آخر {result = str ؛ }} آخر {result = defaultStr ؛ } نتيجة الإرجاع ؛}التعليقات بسيطة بما فيه الكفاية. إذا كنت لا تفهم ، فيمكنك ترك رسالة ، وسوف يرد المدون إذا رأيت ذلك.
2. قم بطرح طول السلسلة بواحد
// اطرح طول واحد string.prototype.dellast = function () {return this.substring (0 ، this.length - 1)}قد يعتقد بعض الناس أن هذه الطريقة مشبوهة بعض الشيء في خلع سراويلهم والضرورة ، ولكن في الواقع ، غالبًا ما تكون هذه العملية مطلوبة في المشاريع الحقيقية.
بدلاً من كتابة فرعية طويلة ، يجب أن نكتب طريقة لتبسيط الكود ، كما أنه من المريح للغاية النقر مباشرة إلى السلسلة المقابلة وتحديد Dellast عند ترميز الرمز.
في جملة واحدة ، لا بأس في استخدامها!
3. أكمل الطول المحدد للسلسلة الرقمية
// الطول الثابت للسلاسل الرقمية string.prototype.addzero = function (n) {var num = this var len = num.toString (). length ؛ بينما (len <n) {num = '0' + num ؛ Len ++ ؛ } إرجاع num ؛}قد لا تفهم ذلك عند قراءة التعليقات. في الواقع ، إنها مجرد إضافة هذه السلسلة إلى "2". يمكن استخدام طريقة التمديد هذه بهذه الطريقة. addzero (2)
ثم السلسلة التي تم إرجاعها هي سلسلة مثل "02".
لقد قال الجميع أنه لا بأس بعد استخدامه!
4. تحويل نوع قاعدة البيانات حتى الآن
string.prototype.dtd = function () {return new Date (date.parse (this.toString (). استبدال (//g ، "/")))}5. تم حذف لقب المستخدم
.
ما سبق هو كل شيء عن هذا المقال ، آمل أن يكون مفيدًا لتعلم الجميع.