正如标题所述,我试图拦截来自用户页面的脚本请求,从后台对脚本URL进行GET请求,添加一些功能,然后将其发送回用户。
一些警告:
到目前为止,我提供了两种解决方案,但都无法正常工作。基本代码:
chrome.webRequest.onBeforeRequest.addListener(
function handleRequest(request) {
// First I make the get request for the script myself SYNCHRONOUSLY,
// because the webRequest API cannot handle async.
const syncRequest = new XMLHttpRequest();
syncRequest.open('GET', request.url, false);
syncRequest.send(null);
const code = syncRequest.responseText;
},
{ urls: ['<all_urls>'] },
['blocking'],
);
现在,有了代码,我尝试了两种方法将其重新插入页面。
<script></script>
标签内的页面中。除了代码,我还发送了一个索引,以确保脚本以正确的顺序重新插入到页面中。这对我的虚拟网站来说效果很好,但在youtube等较大的应用程序上却无法正常工作,因为该应用程序无法加载大多数视频的图像。有关发生这种情况的任何提示?我返回到数据URL的重定向:
if (condition) return { cancel: false }
else return { redirectUrl: 'data:application/javascript; charset=utf-8,'.concat(alteredCode) };
第二个选项破坏了代码格式,有时会删除空格,有时会缩短空格。我不确定这种行为背后的原因,这可能与数据网址规范有关。
我被困住了。我已经在此网站上研究了几乎所有相关答案,但找不到任何东西。 非常感谢您的帮助或信息!
感谢您的宝贵时间!!!