2017-07-07 98 views
0

我正在使用Chrome擴展。其目的是顯示從一個頁面上的多個服務器收集的數據。我正在利用Chrome擴展程序的功能在PC啓動時作爲後臺進程運行,以便始終收集數據。在Chrome擴展中查看背景HTML頁面

manifest.json的

{ 
    "manifest_version": 2, 

    "name": "Data Hub", 
    "description": "This extension gathers and analyzes data from several servers", 
    "version": "1.0", 

    "browser_action": { 
     "default_icon": "icon.png", 
     "default_popup": "popup.html" 
    }, 
    "background": { 
     "page": "background.html" 
    }, 
    "permissions":[ 
     "background" 
    ], 
} 

Popup.htmlPopup.js

點擊彈出圖標時打開Background.html的新實例。

Work.js

無限循環:使AJAX請求,處理數據,並更新Background.html。腳本位於我的擴展程序的文件夾中。

Background.html

每個實例調用自己的Work.js.實例


如果我單擊彈出框,Background.html的新實例將在新選項卡中打開。我可以在chrome://extensions/中看到,現在有2個Background.html實例。它開始在這個瞬間開始顯示數據,我可以看到頁面的HTML元素。當選項卡關閉時,該數據將丟失。

我希望能夠看到原始Background.html頁面的HTML元素。原始實例自啓動以來一直運行,並在Chrome關閉時繼續運行,因此它包含所有數據。

chrome://extensions/當我點擊查看Background.html的原始實例時,我只能看到開發人員工具,而不能看到頁面上的HTML元素。

回答

1

僅僅因爲一個文件被命名爲background.html,當它在一個選項卡中打開時它不會成​​爲一個背景頁面。它變成另一個擁有自己的上下文,文檔,窗口的頁面 - 並且只有在該選項卡關閉之前它才存在。這些擴展只有一個在manifest.json的"background"部分中聲明的實際背景頁面。

請務必閱讀extensions architecture overview並重新編寫代碼。您可以在chrome.storage.local中保留數據,也可以在擴展的其他頁面中使用chrome.extension.getBackgroundPage()訪問真實且唯一的後臺頁面window對象,該對象將公開全局變量和函數。

+0

我想我的意思是問是否有一種簡單的方法將所有HTML元素從我的真實背景頁面複製到用戶可見的新頁面?我的代碼用於在真實但不可見的背景頁面上顯示所有數據。 –

+0

元素不能在不同的頁面之間複製,但可以複製它們的html。 – wOxxOm

相關問題