嘿,我的朋友和我刚接触javascript,并遇到了一些代码问题。目前,我们正在尝试开发一个chrome扩展程序,通过检测击键来检测用户在特定的google文档上的工作时间和工作量。
我们当前的方法涉及创建“ keypress”事件侦听器。我们将其放入可在任何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);
任何帮助表示赞赏
我没有在g-docs或g-sheets上看到用于主要内容的iframe,但是如果您坚持要在manifest.json内容脚本声明中使用“ all_frames”:true和“ match_about_blank”:true使其在其中运行所有iframe自动。
另一个想法是捕捉事件现场看到之前:申报“run_at”:“document_start”中的manifest.json和使用您的内容脚本true
用于将useCapture的addEventListener的参数:document.addEventListener("keydown", handler, true);
-这条线应该在你的内容脚本的主代码执行在构建页面DOM之前注册侦听器,请不要将其放入某些内容load
或DOMContentLoaded
回调中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句