簡體   English   中英

JavaScript class 覆蓋所有框架

[英]JavaScript class override for all frames

如果注入的JavaScript代碼修改了Date class

Date = new Proxy(Date, { ...

或者

Date.prototype.toString = function() { ...

在窗口/文檔的頂層,這些覆蓋更改是否也會遞歸地應用於所有框架和 iframe?

如果沒有,有沒有辦法強迫它?

不,如果不修改瀏覽器的源代碼,就無法自動完成。

您必須使用以下方法之一在每一幀中顯式運行您的代碼:

  1. 聲明一個在每一幀中運行的內容腳本:

     "content_scripts": [{ "matches": ["<all_urls>"], "js": ["content.js"], "run_at": "document_start", "all_frames": true, "match_about_blank": true }],
  2. 或者將allFrames: true, matchAboutBlank: true添加到chrome.tabs.executeScript的選項中。

  3. 或使用核選項: chrome.debugger API 附加到選項卡並發送 CDP 命令,如Page.addScriptToEvaluateOnNewDocument 缺點是它會在每個選項卡的頂部顯示警告通知。

在情況 1 和 2 中,應將覆蓋原型的代碼添加到頁面上下文中 另請注意,由於錯誤或固有限制,Chrome/Firefox 可能無法在某些 iframe 中運行內容腳本,例如 Firefox 中具有 CSP sandbox的 iframe 或 Chrome 中具有src="javascript:..."的 iframe。

暫無
暫無

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

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