如何解决Chrome 扩展程序 - 如何在清单版本 3 (MV3) 中获取窗口对象?
概述
我能够通过新的 chrome.scripting
API 成功注入我的 Javascript 脚本。
但是,我仍然无法通过这个注入的脚本访问页面的 window
对象。
我的尝试
回到 MV2,我曾经做过以下事情:
async function getwindow() {
return new Promise(function (resolve,reject) {
const script = document.createElement('script');
script.text = `
const _window = JSON.stringify(window);
document.body.insertAdjacentHTML("beforebegin","<div id='dummy' style='display:none;width:0;height:0;pointer-events:none;'>"+_window+"</div>")
`;
document.getElementsByTagName('head')[0].appendChild(script);
const _window = document.getElementById('dummy');
const data = JSON.parse(_window.innerText)
script.remove();
resolve(data);
});
}
(async () => {
const _window = await getwindow();
console.log(_window)
})();
但这已经不可能了。它给了我以下错误:
拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script-src 'self'”。启用内联执行需要“unsafe-inline”关键字、哈希(“sha256-iAKY8pCLpBsspttuizEMbuFVrucrXcGUoo/RYdGQEyw=')或随机数(“nonce-...”)。
基于该错误,我找到了 this answer 和 this question 答案,但它没有解决我的问题,因为前者用于 MV2,而后者使用的是外部脚本。我无法使用本地脚本使其工作。
我想要达到的目标
我想从我的 Chrome 扩展程序访问给定网站的 window
对象。
其他注意事项
- 在我的清单中,我拥有以下权限:
"permissions": ["scripting","activeTab","webRequest"]
此外,我在 content_scripts
和 web_accessible_resources
下添加了我的脚本。
非常感谢任何帮助。
谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。