chrome.devtools.inspectedWindow

Description

Utilisez l'API chrome.devtools.inspectedWindow pour interagir avec la fenêtre inspectée: obtenez l'ID de l'onglet de la page inspectée, évaluez le code dans le contexte de la fenêtre inspectée, actualisez la page ou obtenez la liste des ressources de la page.

Fichier manifeste

Les clés suivantes doivent être déclarées dans le fichier manifeste pour utiliser cette API.

"devtools_page"

Utilisez chrome.devtools.inspectedWindow pour interagir avec la fenêtre inspectée: obtenez l'ID de l'onglet pour la page inspectée, évaluer le code dans le contexte d'une fenêtre inspectée, actualiser la page ou obtenir la liste des ressources de la page.

Consultez le récapitulatif des API d'outils de développement pour obtenir une présentation générale de l'utilisation des API des outils de développement.

Présentation

La propriété tabId fournit l'identifiant d'onglet que vous pouvez utiliser avec chrome.tabs.*. Appels d'API. Toutefois, veuillez noter que l'API chrome.tabs.* n'est pas exposée aux outils pour les développeurs. pages d'extension pour des raisons de sécurité, vous devez transmettre l'ID de l'onglet à l'arrière-plan et appeler les fonctions de l'API chrome.tabs.* à partir de là.

La méthode reload peut être utilisée pour actualiser la page inspectée. De plus, l'appelant peut spécifier un remplacement pour la chaîne user-agent, un script qui sera injecté tôt lors du chargement de la page ou un pour forcer l'actualisation des ressources mises en cache.

Utilisez l'appel getResources et l'événement onResourceContent pour obtenir la liste des ressources. (documents, feuilles de style, scripts, images, etc.) au sein de la page inspectée. Les getContent et Les méthodes setContent de la classe Resource avec l'événement onResourceContentCommitted peuvent être utilisé pour permettre la modification du contenu d'une ressource, par exemple par un éditeur externe ;

Exécuter du code dans la fenêtre inspectée

La méthode eval permet aux extensions d'exécuter du code JavaScript dans le contexte de la page inspectée. Cette méthode est efficace lorsqu'elle est utilisée dans le bon contexte et dangereuse lorsqu'elle est utilisée de manière inappropriée. Utilisez la méthode tabs.executeScript, sauf si vous avez besoin de la fonctionnalité spécifique fournies par la méthode eval.

Voici les principales différences entre les méthodes eval et tabs.executeScript:

  • La méthode eval n'utilise pas un monde isolé pour le code en cours d'évaluation. Le code JavaScript l'état de la fenêtre inspectée est accessible au code. Utilisez cette méthode lorsque l'accès Veuillez indiquer l'état JavaScript de la page inspectée.
  • Le contexte d'exécution du code évalué inclut l'API Developer Tools Console. Par exemple, le code peut utiliser inspect et $0.
  • Le code évalué peut renvoyer une valeur transmise au rappel de l'extension. La valeur renvoyée doit être un objet JSON valide (il ne peut contenir que des types JavaScript primitifs et des objets acycliques) des références à d'autres objets JSON). Soyez particulièrement vigilant lors du traitement des données reçues depuis la page inspectée (le contexte d'exécution est essentiellement contrôlé par la page inspectée) ; un une page malveillante peut affecter les données renvoyées à l'extension.

Notez qu'une page peut inclure plusieurs contextes d'exécution JavaScript différents. Chaque image a son plus un contexte supplémentaire pour chaque extension dont les scripts de contenu s'exécutent dans ce cadre.

Par défaut, la méthode eval s'exécute dans le contexte du frame principal de la page inspectée.

La méthode eval accepte un deuxième argument facultatif que vous pouvez utiliser pour spécifier le contexte dans lequel le code est évalué. Cet objet options peut contenir une ou plusieurs des clés suivantes:

frameURL
Permet de spécifier un cadre autre que le cadre principal de la page inspectée.
contextSecurityOrigin
Permet de sélectionner un contexte dans le frame spécifié en fonction de son origine Web.
useContentScriptContext
Si la valeur est "true", exécutez le script dans le même contexte que les scripts de contenu de l'extension. (équivalent à en spécifiant l'organisation Web de l'extension comme origine de sécurité du contexte.) Cela peut être utilisé pour échanger des données avec le script de contenu.

Exemples

Le code suivant vérifie la version de jQuery utilisée par la page inspectée:

chrome.devtools.inspectedWindow.eval(
  "jQuery.fn.jquery",
  function(result, isException) {
    if (isException) {
      console.log("the page is not using jQuery");
    } else {
      console.log("The page is using jQuery v" + result);
    }
  }
);

Pour essayer cette API, installez les exemples d'API Devtools à partir de chrome-extension-samples. un dépôt de clés.

Types

Resource

Ressource de la page inspectée, comme un document, un script ou une image.

Propriétés

  • url

    chaîne

    URL de la ressource.

  • getContent

    vide

    Récupère le contenu de la ressource.

    La fonction getContent se présente comme suit:

    (callback: function) => {...}

    • rappel

      fonction

      Le paramètre callback se présente comme suit:

      (content: string, encoding: string) => void

      • contenu

        chaîne

        Contenu de la ressource (potentiellement encodé).

      • encoding

        chaîne

        Ce champ est vide si le contenu n'est pas encodé. Sinon, il est vide. Actuellement, seul le format base64 est pris en charge.

  • setContent

    vide

    Définit le contenu de la ressource.

    La fonction setContent se présente comme suit:

    (content: string, commit: boolean, callback?: function) => {...}

    • contenu

      chaîne

      Nouveau contenu de la ressource. Seules les ressources de type "texte" sont actuellement acceptées.

    • valider

      booléen

      "True" si l'utilisateur a fini de modifier la ressource et que le nouveau contenu de la ressource doit être conservé "false" s'il s'agit d'une modification mineure envoyée par l'utilisateur qui modifie la ressource.

    • rappel

      function facultatif

      Le paramètre callback se présente comme suit:

      (error?: object) => void

      • erreur

        objet facultatif

        Défini sur "non défini" si le contenu de la ressource a bien été défini. décrit l'erreur dans le cas contraire.

Propriétés

tabId

ID de l'onglet inspecté. Cet ID peut être utilisé avec chrome.tabs*. Compute Engine.

Type

Nombre

Méthodes

eval()

chrome.devtools.inspectedWindow.eval(
  expression: string,
  options?: object,
  callback?: function,
)

Évalue une expression JavaScript dans le contexte du frame principal de la page inspectée. L'expression doit renvoyer une valeur d'objet compatible JSON. Sinon, une exception est générée. La fonction d'évaluation peut signaler une erreur côté Outils de développement ou une exception JavaScript qui se produit lors de l'évaluation. Dans les deux cas, le paramètre result du rappel est undefined. Dans le cas d'une erreur côté Outils de développement, le paramètre isException n'est pas nul, et isError est défini sur "true" et code sur un code d'erreur. Dans le cas d'une erreur JavaScript, isException est défini sur "true" et value est défini sur la valeur de chaîne de l'objet généré.

Paramètres

  • expression

    chaîne

    Expression à évaluer.

  • options

    objet facultatif

    Le paramètre "options" peut contenir une ou plusieurs options.

    • frameURL

      chaîne facultatif

      Si elle est spécifiée, l'expression est évaluée sur l'iFrame dont l'URL correspond à celle indiquée. Par défaut, l'expression est évaluée dans le cadre supérieur de la page inspectée.

    • scriptExecutionContext

      chaîne facultatif

      Chrome 107 ou version ultérieure

      Évalue l'expression dans le contexte d'un script de contenu d'une extension correspondant à l'origine spécifiée. Si cet argument est présent, scriptExecutionContext remplace la valeur "true". sur useContentScriptContext.

    • useContentScriptContext

      Booléen facultatif

      Évaluez l'expression dans le contexte du script de contenu de l'extension appelante, à condition que le script de contenu soit déjà injecté dans la page inspectée. Si ce n'est pas le cas, l'expression n'est pas évaluée et le rappel est appelé avec le paramètre d'exception défini sur un objet dont le champ isError est défini sur "true" et le champ code sur E_NOTFOUND.

  • rappel

    function facultatif

    Le paramètre callback se présente comme suit:

    (result: object, exceptionInfo: object) => void

    • résultat

      objet

      Résultat de l'évaluation

    • exceptionInfo

      objet

      Objet fournissant des détails si une exception s'est produite lors de l'évaluation de l'expression.

      • code

        chaîne

        Indiquez si l'erreur s'est produite côté des outils de développement avant que l'expression ne soit évaluée.

      • description

        chaîne

        Indiquez si l'erreur s'est produite côté des outils de développement avant que l'expression ne soit évaluée.

      • détails

        tout[]

        Définit si l'erreur s'est produite côté des outils de développement avant l'évaluation de l'expression. Contient le tableau des valeurs pouvant être substituées dans la chaîne de description pour fournir plus d'informations sur la cause de l'erreur.

      • isError

        booléen

        Indiquez si l'erreur s'est produite côté des outils de développement avant que l'expression ne soit évaluée.

      • isException

        booléen

        Défini si le code évalué génère une exception non gérée.

      • valeur

        chaîne

        Défini si le code évalué génère une exception non gérée.

getResources()

chrome.devtools.inspectedWindow.getResources(
  callback: function,
)

Récupère la liste des ressources de la page inspectée.

Paramètres

  • rappel

    fonction

    Le paramètre callback se présente comme suit:

    (resources: Resource[]) => void

    • ressources

      Ressources sur la page.

reload()

chrome.devtools.inspectedWindow.reload(
  reloadOptions?: object,
)

Actualise la page inspectée.

Paramètres

  • reloadOptions

    objet facultatif

    • ignoreCache

      Booléen facultatif

      Si la valeur est "true", le chargeur contourne le cache pour toutes les ressources de page inspectées chargées avant le déclenchement de l'événement load. L'effet est semblable à celui obtenu en appuyant sur Ctrl+Maj+R dans la fenêtre inspectée ou dans la fenêtre des outils de développement.

    • injectedScript

      chaîne facultatif

      S'il est spécifié, le script est injecté dans chaque frame de la page inspectée immédiatement après le chargement, avant tout script du frame. Le script ne sera pas injecté après les recharges suivantes, par exemple si l'utilisateur appuie sur Ctrl+R.

    • userAgent

      chaîne facultatif

      Si elle est spécifiée, la chaîne remplace la valeur de l'en-tête HTTP User-Agent envoyé lors du chargement des ressources de la page inspectée. La chaîne remplacera également la valeur de la propriété navigator.userAgent qui est renvoyée à tous les scripts en cours d'exécution sur la page inspectée.

Événements

onResourceAdded

chrome.devtools.inspectedWindow.onResourceAdded.addListener(
  callback: function,
)

Déclenché lorsqu'une nouvelle ressource est ajoutée à la page inspectée.

Paramètres

  • rappel

    fonction

    Le paramètre callback se présente comme suit:

    (resource: Resource) => void

onResourceContentCommitted

chrome.devtools.inspectedWindow.onResourceContentCommitted.addListener(
  callback: function,
)

Déclenché lorsqu'une nouvelle révision de la ressource est validée (par exemple, lorsque l'utilisateur enregistre une version modifiée de la ressource dans les outils pour les développeurs).

Paramètres

  • rappel

    fonction

    Le paramètre callback se présente comme suit:

    (resource: Resource, content: string) => void