![](/img/trans.png)
[英]javascript: How to override a method for all the instances of some class?
[英]JavaScript class override for all frames
如果注入的JavaScript代碼修改了Date
class
Date = new Proxy(Date, { ...
或者
Date.prototype.toString = function() { ...
在窗口/文檔的頂層,這些覆蓋更改是否也會遞歸地應用於所有框架和 iframe?
如果沒有,有沒有辦法強迫它?
不,如果不修改瀏覽器的源代碼,就無法自動完成。
您必須使用以下方法之一在每一幀中顯式運行您的代碼:
聲明一個在每一幀中運行的內容腳本:
"content_scripts": [{ "matches": ["<all_urls>"], "js": ["content.js"], "run_at": "document_start", "all_frames": true, "match_about_blank": true }],
或者將allFrames: true, matchAboutBlank: true
添加到chrome.tabs.executeScript的選項中。
或使用核選項: 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.