Maison  >  Article  >  interface Web  >  Comment obtenir le numéro de ligne et l'URL source de la fonction de l'appelant en JavaScript ?

Comment obtenir le numéro de ligne et l'URL source de la fonction de l'appelant en JavaScript ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-20 21:52:02645parcourir

How to Get Line Number and Source URL of Caller Function in JavaScript?

Obtention du numéro de ligne et de l'URL source de la fonction appelante en JavaScript

Détermination du numéro de ligne et de l'URL source à partir desquels une méthode JavaScript a été invoquée peut être utile à des fins de débogage et de traçage du flux d’exécution. Bien qu'il n'existe pas de méthode intégrée directe, nous pouvons utiliser la propriété stack de l'objet Error pour récupérer ces informations.

Obtention du numéro de ligne de la fonction de l'appelant

Pour obtenir le numéro de ligne où la fonction appelante a été appelée, nous pouvons analyser la propriété de pile d'un objet Error :

<code class="js">function getErrorObject() {
  try {
    throw Error('');
  } catch (err) {
    return err;
  }
}

var err = getErrorObject();
var caller_line = err.stack.split("\n")[4];
var index = caller_line.indexOf("at ");
var clean = caller_line.slice(index + 2, caller_line.length);
console.log(clean);</code>

Dans cet exemple, nous lançons une erreur pour récupérer l'objet Error, qui contient la pile d'appels. Nous divisons ensuite la pile par sauts de ligne et sélectionnons la quatrième ligne (index 3), qui contient généralement les informations sur la fonction appelante. Nous coupons la première chaîne "at" pour extraire le numéro de ligne.

Obtention de l'URL source de la fonction de l'appelant

Malheureusement, il n'existe aucun moyen simple d'obtenir l'URL source de la fonction appelante depuis la fonction elle-même. Cependant, nous pouvons utiliser une solution de contournement impliquant la journalisation de la console :

<code class="js">function logCallerInfo() {
  console.log("%c", "color: white; background: #000; padding:2px; line-height: 1.5em;",
    err.stack.split("\n")[4]);
}

logCallerInfo();</code>

Dans cet exemple, nous utilisons la journalisation de la console pour afficher les informations sur la fonction de l'appelant dans un style personnalisé. La quatrième ligne de la pile (index 3) doit inclure l'URL source de la fonction appelante. L'inspection de la sortie de la console révélera les informations souhaitées.

Bien que ces méthodes fournissent un moyen de se rapprocher du numéro de ligne de la fonction de l'appelant et de l'URL source, il est important de noter qu'elles peuvent ne pas être entièrement fiables dans toutes les situations.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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