簡體   English   中英

如何在Chrome擴展程序中包含外部對象?

[英]How to include an external object in my Chrome Extension?

我有一個chrome擴展,其對象如下所示:

someFunctions = {
    'a': function() {
        doStuff();
    },
    'b': function() {
        doOtherStuff();
    }
}

目前,我的擴展程序需要每次someFunctions需要新功能時進行更新。 由於我的擴展程序已從someFunctions中的2個功能躍升至21個,每次都需要進行新的更新,因此這令人非常沮喪。

我想從我的域外部加載此對象,因此我的擴展程序不需要任何新更新即可修復潛在的錯誤或小麻煩。 這樣做的最佳方法是什么? 我想避免將我的域添加到清單中的權限列表中,或者根本不增加擴展名中的權限-我不需要加載整個.js-只是一些功能。

我想避免將代碼重組為一些奇怪的JSON對象,並且反對使用eval()

通常,由於默認的內容安全策略,您將無法執行此操作。

但是,只要您通過HTTPS提供文件,擴展名就可以放寬此策略(這是嘗試防止MITM的安全要求)。

閱讀CSP文檔

具體來說,假設您的JS文件已作為https://example.com/awesome.js 您無法擺脫“我不需要加載整個.js-只需加載一些函數”的問題,Chrome需要評估您的代碼(如果其中包含函數)。

您需要將其添加到清單中的CSP中:

"content_security_policy": "script-src 'self' https://example.com; object-src 'self'"

我認為您不能通過清單包含外部腳本(但歡迎嘗試,這會很有趣) 如果是HTML頁面(如彈出窗口),則只需在其中包含<script>標記。

否則,可以通過以編程方式創建<script>標記並將其添加到頁面中來避免使用eval 對於內容腳本,您可能應該使用AJAX / eval(或使用tabs.executeScript{code: "..."}形式的tabs.executeScript

暫無
暫無

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

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