僅當文檔的內容類型匹配特定模式時,纔可以注入內容腳本?實際上,我的目標要簡單得多:我需要將我的內容腳本注入到HTML文檔而不是(現在,它也注入了XML文檔)。內容腳本必須在「document_start」處注入。如何將Chrome擴展內容腳本限制爲特定的內容類型?
5
A
回答
1
我來到了一個類似的問題,並通過以下方式解決它。
根據文檔'Content-Type
,我決定將腳本注入到所有文檔中,但僅在正確的文檔中執行,而不是限制注入內容腳本的各種文檔。
這通過分析document.xmlVersion
和document.doctype
屬性來完成:
document.doctype
必須不是HTML文檔中null
;document.xmlVersion
在XML文檔中必須不是null
;
因此,很容易使用它們中的任何一種來區分一種類型,只在適當的時候「綁定」所有必需的腳本。特別是,可以注入小的腳本加載器,這會有條件地加載其他可能很重的東西。
Chrome瀏覽器不提供任何方法來限制文檔類型的腳本注入。
0
執行此操作的最可靠的方法是通過chrome.webRequest.onHeadersReceived
,它允許您查詢並保留響應標頭信息(包括Content-Type
)。遺憾的是,目前該穩定版本的Chrome尚未推出此API。 (您可以在Chrome的當前版本中使用實驗API,但是您將無法發佈使用它的擴展名。)
一種可能的解決方案是確定是否正在使用Chrome處理注入的文檔作爲XML。 (如果是這樣,請停止處理文檔。)完成此操作的一個竅門是檢查document.getElementById('webkit-xml-viewer-source-xml')
是否爲null
。 Chrome/webkit的XML查看器的這個元素部分。
相關問題
- 1. Chrome擴展內容腳本
- 2. 內容腳本沒有迴應內容腳本的Chrome擴展
- 3. Chrome擴展內容腳本中的JQueryUI
- 4. Chrome擴展(內容腳本)緩存CSS
- 5. Chrome擴展引用/從內容腳本
- 6. 停止內容腳本在Chrome擴展
- 7. Chrome擴展 - 內容腳本點播
- 8. Chrome擴展程序 - 內容腳本匹配限於權限嗎?
- 9. 使用Chrome擴展內容腳本嵌入其他內容
- 10. 將iframe從Chrome擴展內容腳本調整爲動態內容
- 11. 如何將JQuery ui加載到Chrome擴展內容腳本中?
- 12. 內容類型的擴展
- 13. 如何將選定的內容複製到Chrome擴展中?
- 14. 如何刷新Chrome擴展的內容腳本,如DOM更改
- 15. Chrome擴展內容腳本訪問擴展框架
- 16. 如何從Chrome擴展中的內容腳本獲取變量?
- 17. 如何獲得Chrome擴展的內容腳本在後臺?
- 18. Chrome擴展:內容腳本和網頁的腳本
- 19. 剪貼板複製/粘貼內容腳本(Chrome擴展)
- 20. Chrome擴展代碼和內容腳本vs注入腳本
- 21. 從Chrome內容腳本擴展訪問內嵌框架
- 22. 在Chrome擴展中,內容腳本不會影響iframe內部?
- 23. Chrome擴展內容腳本自定義UI
- 24. 爲Chrome擴展插入內容腳本不起作用
- 25. Chrome擴展:如何檢測是否使用內容腳本安裝了擴展
- 26. Chrome擴展的內容腳本沒有被注入特定網站
- 27. 如何將郵件從backgroundjs發送到Chrome擴展中的內容腳本?
- 28. 什麼的內容腳本類型和內容樣式類型
- 29. 在擴展的Chrome DevTools和內容腳本之間的溝通
- 30. 如何觸發Chrome擴展程序,URL中給定散列的內容腳本?
如果您的內容腳本在執行操作之前添加了一個事件偵聽器來等待文檔加載,該怎麼辦?例如,'document.addEventListener(「DOMContentLoaded」,function(){do.stuff()};'。 – cheeken
這是我應該避免的,我的腳本必須先執行(在文檔加載之前) – spektom
我明白了。在這種情況下,我沒有其他建議,祝你好運。 – cheeken