recherche
Maisoninterface Webjs tutorielQuelques compétences js METHODS_Javascript plus pratiques

Cet article partage certaines des méthodes js les plus pratiques que j'ai accumulées dans ma vie quotidienne pour vous guider et vous évaluer. Je voulais le présenter par parties, mais j'ai trouvé que c'était un peu superflu. Après avoir fait le tri, il n'y a pas beaucoup de méthodes pratiques. Naturellement, il y a certaines méthodes que j'ai vues sur Internet et que je pense être très pratiques. Je les publierai ici pour que tout le monde puisse en discuter.

1. Cliquez sur Retour pour accéder à la page spécifiée s'il n'y a pas de page précédente

Tout d'abord, il y a une exigence dans la demande du client : une seule page partagée sur WeChat, cliquez sur Retour pour accéder à la page d'accueil du site Web.

Durant cette période, nous avons discuté de cette fonction avec nos clients, si nous pouvions ajouter un bouton de retour à la page d'accueil pour accéder à la page.

Cependant, cette méthode ne peut pas être appliquée à chaque page, et la page de partage qui nécessite cette fonction ne peut pas placer une icône sans affecter l'esthétique. Je n’avais donc pas d’autre choix que de poursuivre Du Niang. Du Niang regorge également de fonctions marginales.

Ainsi, grâce à mes propres tentatives, j'ai le code suivant :

//返回之前没页面则返回首页
function pushHistory() {
  //获取浏览器历史记录栈中的记录个数
  //由于页面加载的时候就会将当前页面压入栈中 所以判断是否小于2
  if (history.length < 2) {
    var state = {
      title: "index",
      url: getHttpPrefix + "index.html"
    };
    window.history.pushState(state, "index", getHttpPrefix + "index.html");
    state = {
      title: "index",
      url: ""
    };
    window.history.pushState(state, "index", "");
  }
}

Ajoutez ensuite le code suivant à l'événement page ready :

setTimeout(function () {
    pushHistory()
    window.addEventListener("popstate", function (e) { 5       if (window.history.state !=null&&window.history.state.url != "") {
        location.href = window.history.state.url  
      }

    });
  }, 300);

La fonction spécifique est de déterminer s'il y a une page avant. Sinon, insérez l'adresse du lien du site Web spécifié dans l'état (la page d'accueil est utilisée ici), puis écoutez l'événement popstate et exécutez la fonction correspondante. opérations.

Ce code peut encore présenter quelques problèmes mineurs, j'ai donc l'intention de le publier afin que quelqu'un puisse en discuter et l'améliorer ensemble.

2. Méthode de journalisation pratique

Je crois que tout le monde est déjà fatigué de la longueur de frappe légèrement longue de console.log() lors du débogage de la page. Certaines personnes peuvent utiliser la saisie par raccourci pour une saisie rapide (par exemple : entrez cl pour afficher intelligemment la console dans l'environnement de compilation). Cependant, lorsque le projet sera publié, il sera encore difficile d'effacer de nombreuses informations de débogage que j'ai oublié de supprimer. J'ai donc simplement écrit une méthode pour gérer spécifiquement cette situation.

function lll() {
  //全局变量_debug用来控制调试信息开关
  if (_debug) {
    var arr = [];
    //arguments是方法的参数集合 这样做是为了不限制参数的个数,方便调试
    for (_item in arguments) {
      //由于个人习惯字符串信息就显示在一行里所以对字符串进行了筛选拼接
      if (typeof _item == "String") {
        arr.push(_item)
      } else {
        console.log(_item)
      }
    }
    if(arr.length>0)console.log(arr.join(','))
  }
}

En fait, ce qui me mécontente un peu c'est qu'il n'y a pas de moyen d'obtenir automatiquement le nom du paramètre, sinon il peut être utilisé comme ceci :

var a = 123, b = 333, obj = { name: "name", content: "..." }
 lll(a, b, obj)//调试信息为: a:123,b:123
        //obj:
        //{ name: "name", content: "..." }

Cela vous paraît plus clair ?

3. Obtenir des informations de positionnement du navigateur (prend en charge les appareils mobiles)

De nombreux projets reçus sont personnalisés et développés pour les terminaux mobiles, de sorte que les informations nécessaires à la localisation de l'emplacement actuel sont souvent utilisées.

Mais de nombreuses interfaces sur Internet doivent référencer un élément de js externe, comme l'API de Baidu, l'API de WeChat, etc.

Ensuite, je présenterai une méthode qui ne nécessite pas de référencer des js externes, mais nécessite uniquement de soumettre des paramètres au lien API externe pour obtenir le positionnement :

if (getCookie('position') == "") {

    if (navigator.userAgent.indexOf("MicroMessenger") > -1) {//判断是否是微信端,具体视情况而定
      navigator.geolocation.getCurrentPosition(function getPositionSuccess(position) {
        //通过html5的navigator.geolocation接口 获取浏览器的当前定位 (移动端最准确,PC会有较大偏差)
        var lat = position.coords.latitude;//获取过来的当前纬度
        var lng = position.coords.longitude;//获取过来的当前经度
        var arr = []
        arr.push(lng)
        arr.push(lat)
        //alert(position)
        $.ajax({
          type: "GET",
          url: "http://api.map.baidu.com/geocoder/v2/&#63;ak=oM55dVWVwLUU7shkz7uY8M6E&callback=renderReverse&location=" + lat + "," + lng + "&output=json&pois=1",//将经纬度通过地址栏参数的形式 传给百度提供的api
          beforeSend: function () {
            //由于这段过程需要些时间 所以最好页面上有加载提示
            iosload()//本人写的页面加载动画
          },
          data: {},
          dataType: "jsonp",//由于是跨域传输 所以需要以jsonp的形式进行传输
          jsonpCallback: "renderReverse",//类似跨域传输的标识 需要接收方和传输方做好统一
          success: function (data) {
            ios.hide();
            //alert(data)
            $("#myposition").html("我在:" + data.result.addressComponent.city)
            setCookie("position", data.result.addressComponent.city, 24 * 60 * 30)
          }
        })

  }, function (error) {
    //alert(error.message);
  }, {})
  }
}

Ce code est un morceau de code dans mon projet actuel. Comme j'ai besoin de déterminer si les informations de positionnement ont été obtenues, je ne peux pas les obtenir à chaque chargement de la page, j'utilise donc Cookie pour enregistrer les informations de positionnement

Au début, il a été jugé s'il existait un cookie d'informations de positionnement actuel, mais il n'y en avait pas. Déterminez ensuite s'il est du côté mobile (car le projet est du côté WeChat, donc je ne l'ai vérifié que du côté WeChat)

Appelez ensuite les paramètres d'interface fournis par html5 pour la transmission des données et traitez le jsonp renvoyé par Baidu. Puisque j'ai seulement besoin d'obtenir les informations de localisation de la ville dans mon projet, voici juste un exemple d'obtention de la ville.

4. Récupérez la partie numérique de la chaîne

Comme je suis uniquement responsable de l'implémentation des fonctions dans le projet, de nombreuses pages ne sont pas construites par moi, mais certains novices créeront des situations où il est difficile d'obtenir les valeurs​​dans les balises.

Par exemple :

<div>原价998现在只要
  <a>99.8!</a>
 </div>

Pour des pages comme celle-ci, vous devez parfois insérer le 998 ou le 98. Cela deviendra un peu gênant.

Cette situation peut être facilement résolue par la méthode que je propose ci-dessous

 function getNum(text) {
   var value = text.replace(/[^(0-9).]/ig, "");
   return parseFloat(value);
 }

Cette méthode est très courte et consiste essentiellement à faire correspondre via des expressions régulières. Remplacez les caractères non numériques ou décimaux par des chaînes vides (en fait, supprimez-les)

Les données renvoyées de cette manière sont le nombre que nous voulons. J'ai finalement effectué une opération de conversion en type virgule flottante afin de faciliter le post-traitement des données. Par exemple, conserver deux décimales, arrondir, etc.

5. Obtenir des informations sur l'appareil

//#region 获取设备信息

var browser = {
  versions: function () {
    var u = navigator.userAgent, app = navigator.appVersion;
    return {
      trident: u.indexOf('Trident') > -1, //IE内核
      presto: u.indexOf('Presto') > -1, //opera内核
      webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
      gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1,//火狐内核
      mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
      ios: !!u.match(/\(i[^;]+;( U;)&#63; CPU.+Mac OS X/), //ios终端
      android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器
      iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
      iPad: u.indexOf('iPad') > -1, //是否iPad
      webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部
      weixin: u.indexOf('MicroMessenger') > -1, //是否微信 (2015-01-22新增)
      qq: u.match(/\sQQ/i) == " qq" //是否QQ
    };
  }(),
  language: (navigator.browserLanguage || navigator.language).toLowerCase()
}

//实际使用的时候如下:
if (browser.versions.webKit) {
  //为苹果 谷歌内核执行的代码...
}

//#endregion

Ici, je partage également une façon de juger les informations sur l'appareil qui sont encapsulées dans un objet et qui n'ont pas été écrites par moi mais également vues sur Internet.

Personnellement, je pense que c'est très utile, je vais donc le partager avec tout le monde.

Méthodes d'extension de chaîne - Les méthodes suivantes permettent d'ajouter des Données de type chaîne

1. Masquer la partie de la chaîne qui dépasse la longueur spécifiée

/*
将字符串以指定长度显示,多余部分以省略号显示(len--显示长度
defaultStr--若字符串为空显示的字符串)
*/
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) + "...";
    }
    else {
      result = str;
    }
  }
  else {
    result = defaultStr;
  }
  return result;
}

Les annotations sont assez simples et claires. Si vous ne comprenez pas, vous pouvez laisser un message et le blogueur vous répondra certainement après l'avoir vu.

2. Diminuez la longueur de la chaîne d'un

//长度减一
 String.prototype.delLast = function () {
   return this.substring(0, this.length - 1)
 }

有些人可能会觉得 这个方法有点脱裤子放屁的嫌疑,其实真正的项目中 会经常需要这个操作。

与其写一段长长的substring 不如咱们写个方法将代码精简,并且在码代码的时候 也很方便 直接在对应的字符串后面 轻轻一点,选择delLast就行。

一句话,用过都说好!

3.将数字型字符串补全指定长度

//给数字型字符串固定指定长度
String.prototype.addZero = function (n) {
  var num = this
  var len = num.toString().length;
  while (len < n) {
    num = '0' + num;
    len++;
  }
  return num;
}

看注释可能有点不理解 其实就是加入这个字符串是 "2",通过这个扩展方法 可以这么操作 "2".addZero(2)

那么返回过来的就是"02"这样的字符串。

用过都说好!

4.将数据库DateTime类型转换为Date

 String.prototype.DTD = function () {
   return new Date(Date.parse(this.toString().replace(/-/g, "/")))
 }

 5.用户昵称省略 

//用户昵称省略
 String.prototype.telHide = function () {
   var name = this
   return name.substr(0, 1) + "****" + name.substring(name.length - 1, name.length)
 }

以上就是本文的全部内容,希望对大家的学习有所帮助。

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Construire une application SaaS multi-locataire avec next.js (intégration backend)Construire une application SaaS multi-locataire avec next.js (intégration backend)Apr 11, 2025 am 08:23 AM

J'ai construit une application SAAS multi-locataire fonctionnelle (une application EdTech) avec votre outil technologique quotidien et vous pouvez faire de même. Premièrement, qu'est-ce qu'une application SaaS multi-locataire? Les applications saas multi-locataires vous permettent de servir plusieurs clients à partir d'un chant

Comment construire une application SaaS multi-locataire avec Next.js (Frontend Integration)Comment construire une application SaaS multi-locataire avec Next.js (Frontend Integration)Apr 11, 2025 am 08:22 AM

Cet article démontre l'intégration frontale avec un backend sécurisé par permis, construisant une application fonctionnelle EdTech SaaS en utilisant Next.js. Le frontend récupère les autorisations des utilisateurs pour contrôler la visibilité de l'interface utilisateur et garantit que les demandes d'API adhèrent à la base de rôles

JavaScript: Explorer la polyvalence d'un langage WebJavaScript: Explorer la polyvalence d'un langage WebApr 11, 2025 am 12:01 AM

JavaScript est le langage central du développement Web moderne et est largement utilisé pour sa diversité et sa flexibilité. 1) Développement frontal: construire des pages Web dynamiques et des applications à une seule page via les opérations DOM et les cadres modernes (tels que React, Vue.js, Angular). 2) Développement côté serveur: Node.js utilise un modèle d'E / S non bloquant pour gérer une concurrence élevée et des applications en temps réel. 3) Développement des applications mobiles et de bureau: le développement de la plate-forme multiplateuse est réalisé par réact noral et électron pour améliorer l'efficacité du développement.

L'évolution de JavaScript: tendances actuelles et perspectives d'avenirL'évolution de JavaScript: tendances actuelles et perspectives d'avenirApr 10, 2025 am 09:33 AM

Les dernières tendances de JavaScript incluent la montée en puissance de TypeScript, la popularité des frameworks et bibliothèques modernes et l'application de WebAssembly. Les prospects futurs couvrent des systèmes de type plus puissants, le développement du JavaScript côté serveur, l'expansion de l'intelligence artificielle et de l'apprentissage automatique, et le potentiel de l'informatique IoT et Edge.

Démystifier javascript: ce qu'il fait et pourquoi c'est importantDémystifier javascript: ce qu'il fait et pourquoi c'est importantApr 09, 2025 am 12:07 AM

JavaScript est la pierre angulaire du développement Web moderne, et ses principales fonctions incluent la programmation axée sur les événements, la génération de contenu dynamique et la programmation asynchrone. 1) La programmation axée sur les événements permet aux pages Web de changer dynamiquement en fonction des opérations utilisateur. 2) La génération de contenu dynamique permet d'ajuster le contenu de la page en fonction des conditions. 3) La programmation asynchrone garantit que l'interface utilisateur n'est pas bloquée. JavaScript est largement utilisé dans l'interaction Web, les applications à une page et le développement côté serveur, améliorant considérablement la flexibilité de l'expérience utilisateur et du développement multiplateforme.

Python ou JavaScript est-il meilleur?Python ou JavaScript est-il meilleur?Apr 06, 2025 am 12:14 AM

Python est plus adapté à la science des données et à l'apprentissage automatique, tandis que JavaScript est plus adapté au développement frontal et complet. 1. Python est connu pour sa syntaxe concise et son écosystème de bibliothèque riche, et convient à l'analyse des données et au développement Web. 2. JavaScript est le cœur du développement frontal. Node.js prend en charge la programmation côté serveur et convient au développement complet.

Comment installer JavaScript?Comment installer JavaScript?Apr 05, 2025 am 12:16 AM

JavaScript ne nécessite pas d'installation car il est déjà intégré à des navigateurs modernes. Vous n'avez besoin que d'un éditeur de texte et d'un navigateur pour commencer. 1) Dans l'environnement du navigateur, exécutez-le en intégrant le fichier HTML via des balises. 2) Dans l'environnement Node.js, après avoir téléchargé et installé Node.js, exécutez le fichier JavaScript via la ligne de commande.

Comment envoyer des notifications avant le début d'une tâche en quartz?Comment envoyer des notifications avant le début d'une tâche en quartz?Apr 04, 2025 pm 09:24 PM

Comment envoyer à l'avance des notifications de tâches en quartz lors de l'utilisation du minuteur de quartz pour planifier une tâche, le temps d'exécution de la tâche est défini par l'expression CRON. Maintenant...

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Version crackée d'EditPlus en chinois

Version crackée d'EditPlus en chinois

Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

SublimeText3 Linux nouvelle version

SublimeText3 Linux nouvelle version

Dernière version de SublimeText3 Linux

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire