嘿,我和我的朋友们刚接触 javascript,并且遇到了一些代码问题。
目前,我们正在尝试制作一个 Chrome 扩展,通过检测击键来检测用户何时以及对特定 google 文档进行了多少操作。
我们当前的方法涉及创建一个“按键”事件监听器。我们将其放入在任何 docs.google 网页上运行的 content.js 文件中。问题是,当您在页面上编辑标题/其他内容时它会起作用,但由于某种原因,当用户实际编辑文档时它不会注册。我们在其他网站上尝试过,它可以工作,而将其添加到background.js 则不起作用。
var handler = function (e) {
handler.data.push(e);
console.log("success");
console.log(handler.data);
}
handler.data = [];
window.addEventListener("keydown", handler);
document.addEventListener("keydown", handler);
因此,我们尝试更改 google docs 文档的“iframe”的权限,以便我们可以使用内容脚本,但它仍然不起作用(这是代码)
var divs = document.getElementsByTagName("iframe");
for(var i = 0; i < divs.length; i++){
divs[i].sandbox = 'allow-scripts'
divs[i].addEventListener('keydown', handler, true);
任何帮助表示赞赏
我没有看到 iframe 用于 g-docs 或 g-sheet 上的主要内容,但如果您坚持使用,可以使用“all_frames”:真 and “match_about_blank”:正确在manifest.json内容脚本声明中使其自动在所有iframe中运行。
另一个想法是在站点看到事件之前捕获事件:声明“run_at”:“文档开始”为你的manifest.json中的内容脚本并使用true
for 使用捕获addEventListener的参数:document.addEventListener("keydown", handler, true);
- 此行应该在内容脚本的主代码中执行,以在构建页面 DOM 之前注册监听器,不要将其放在某些内容中load
or DOMContentLoaded
打回来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)