Chrome扩展在文档启动时运行
Chrome extension run at doc start
我有一个脚本,希望在加载之前注入到文档中。I.E;它应该像一样工作
<script..>MYSCRIPT HERE</script>
<html>
.
.
我在chrome中制作了一个正确执行的脚本(我可以提醒(0)等),但它在不同的环境中运行,这不是我想要的。我希望它在与页面相同的环境中运行。
早些时候,我使用了一个技巧,在启动脚本中我使用了
window.location="javascript:<MY SCRIPT HERE>"
这有效地改变了执行环境,但在过去的几天里,它不起作用。我认为这是一个铬错误修复。有其他解决方法吗?注意:由于document.body等不可用,我无法在启动脚本中向页面动态添加脚本标记。
我想向您提供更多关于我为什么需要这个和我以前的解决方案的细节。我无法控制的HTML页面:
.
.
<script>
function a(){//DOSOMETHING}
</script>
.
.
<script>
a(); <<------ I DONT WANT TO CALL THIS
</script>
解决方案:启动JavaScript包含
window.location='javascript:const a=function(){};';<<-CONST used!!
当页面实际加载时,这将强制重新声明"a"的错误,因此,当调用a()时,不会发生任何事情。(聪明,对吧?-_-)
但现在,我意识到当我做window.location="js:.."
时,即使它在单独的环境中运行!
您应该能够通过内容脚本添加script
标记,将脚本注入页面的JavaScript上下文。换句话说,您的脚本可以在document_idle
注入,并执行类似于的操作
var s = document.createElement('script');
s.textContent = 'const a = function () {};';
document.documentElement.appendChild(s);
该脚本标记将在页面的上下文中执行,而不是在脚本的上下文中,并且应该允许您实现所需的结果。
有关内容脚本的文档,请访问https://developer.chrome.com/extensions/content_scripts
相关文章:
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- 在运行时启动jquery-ui.toggleSwitch.js切换开关
- 是否可以从在Firefox或IE的网页中运行的Javascript启动Windows进程
- Apache Cordova:在不启动浏览器应用程序的情况下运行Cordova运行浏览器
- Nodejs/bin/www脚本在启动时未运行
- Nodejs:在节点服务器启动时运行一个js文件
- JQuery启动文件下载,然后运行一个函数
- 当在运行nodejs的服务器上调用new Date()时,Date将返回服务器启动时的日期
- Sencha Touch和Cordova应用程序在设备上运行时卡在启动状态
- PowerShell - 等待 Firefox 启动,运行 imacro 并等待它完成,关闭 Firefox
- 使用 gulp 运行命令以启动 Node.js 服务器
- 在 mysql 启动上运行一些脚本
- Windows Store Cordova App + WinJS:应用在启动时崩溃并出现 JavaScript 运行时
- 尝试使用Selenium运行测试时出现此错误:启动配置AWTConsole引用不存在的项目测试项目
- 动画运行完毕后重新启动动画
- 如果另一个仍在运行,请立即启动 ajax 调用
- Upstart说我的脚本正在运行,但API在我重新启动进程之前不返回数据
- Node.js以及如何在应用程序中获得正常运行时间/启动时间
- PHP脚本重新运行自己,直到进程完成.然后每周重新启动
- 如何在Express服务器启动时运行函数