簡體   English   中英

調試tabs.executeScript時如何使用console.log

[英]How to use console.log when debugging tabs.executeScript

我一直在尋找這個問題的答案,但是當我想調試網頁時,它只帶我去調試擴展本身的解決方案。

我想創建一個擴展程序,使我可以修改特定的網頁(顯然僅在我的計算機上)。
根據chrome開發者網站上的"activeTab"權限教程,我創建了一個非常簡單的腳本,然后進行了以下操作:

// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
  // No tabs or host permissions needed!
  chrome.tabs.executeScript({
    code:'
      var oSwitchContainer = document.getElementById("norm");
      console.log(oSwitchContainer.childNodes);
    '
  });
});

但是,當我檢查頁面時,看不到任何控制台消息,可以通過修改oSwitchContainerinnerHTML輕松更改其內容。

啟用擴展后,是否可以查看頁面的控制台日志?

您說您找到了調試“擴展本身”的解決方案。

看一下“ 架構概述”

您所說的“擴展本身”是它的背景頁面,這是您的browserAction.onClicked偵聽器的執行位置。 如果您從該代碼執行console.log()語句,它將進入后台頁面的控制台。

但是,使用chrome.tabs.executeScript ,您傳遞的代碼將在打開的選項卡的上下文1中執行,而不是在后台頁面中執行。 來自該上下文的所有console.log()調用都轉到打開頁面自己的控制台-您應該在此處查看。

console.log("This will show in the background page console");
chrome.tabs.executeScript(
  { code: 'console.log("This will show in the current tab console");' }
);

1確切地說,擴展名創建了一個隔離的上下文,但是它仍然屬於打開的頁面。 有關更多詳細信息,請參見Content Scripts文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM