我正在研究將擴展內容添加到特定頁面的Chrome擴展。從我的研究,這聽起來像我想要的是content script將執行適當的網頁。我可以使用content_script.matches
manifest.json字段指定「適當的頁面」。使用Chrome擴展內容腳本嵌入其他內容
但是,我遇到的問題是內容腳本運行在一個孤立的世界,separate from the rest of your extension。
我如何設想我的擴展是一組UI pages,它將被內容腳本嵌入到適當的頁面中。 background page將包含構建UI頁面內容的代碼。後臺頁面以及擴展後的UI頁面需要訪問各種Chrome API(例如本地存儲),以及能夠進行跨域請求以檢索其數據。但是,似乎這是不可能的,因爲內容腳本運行在一個孤立的世界中,並且無法訪問我需要的Chrome API。
Message passing允許內容腳本從後臺頁面發送和接收數據,但不允許您獲取UI頁面並將其嵌入到當前網頁中。
我最初認爲當我能夠製作jQuery AJAX request from my content script for an UI page時,我在這方面取得了一些進展,但只讓我看到HTML文件本身。我的UI頁面依靠代碼來編程地構建內容 - 它不僅僅是一個靜態的HTML頁面。而且「構建頁面」JavaScript代碼取決於內容腳本不可用的Chrome API。所以,如果我只是試圖製作我所有的UI頁面和JavaScript資源web_accessible_resources,我可以將它們注入頁面,但它們無法運行。
這讓我想到我的問題:內容腳本如何拉下或嵌入UI pages可以調用背景頁面中的代碼?
僅供參考,內容腳本也可以跨域請求,在Chrome API(消息傳遞,存儲和安全的一些公用事業擴展)的使用部位。 –
好,我錯過了。我更新了我的答案。 – Josh
後臺頁面無法生成原始的TCP請求,因此SMTP也不是一個選項。 [Chrome應用](https://developer.chrome.com/apps/about_apps)(** **不擴展)有權訪問['chrome.socket'](https://developer.chrome.com/apps/socket)API,所以這些理論上可以使用SMTP來發送郵件。 Chrome擴展程序無法寫入活動文件系統中的文件,但如果用戶已批准該權限,則後臺頁面(而非內容腳本)可以讀取文件。如果您需要這些功能,請查看Chrome應用程序。儘管如此,這些不能被集成到網頁中。 –