尝试从我的 chrome 扩展程序访问 gmail 中的 iframe 时出现未定义的错误,但不是从开发者控制台访问

I get undefined error when trying to access iframes in gmail from my chrome extension but not from the developer console

本文关键字:访问 错误 未定义 控制台 开发者 扩展 chrome 我的 程序 gmail iframe      更新时间:2023-09-26

我正在制作一个chrome扩展程序(内容脚本),它将在gmail顶部黑栏中的"更多"之后添加文本。这些元素封装在canvas_frame iframe 中。

当我尝试通过以下方式访问这些元素时:

document.getElementById('canvas_frame').contentWindow.document.getElementById('gbz').innerHTML = scr;

我得到Uncaught TypeError: Cannot read property 'document' of undefined.但是,如果我直接在 chrome 开发人员控制台中键入该代码,它可以工作。这是为什么呢?如何从我的 chrome 扩展程序访问和修改该元素。

我是javascript的新手,所以我可能会错过一些明显的东西。谢谢。

尝试

document.getElementById('canvas_frame').contentDocument.document.getElementById('gbz').innerHTML = src;

我自己构建了 Chrome 扩展程序并遇到了这个问题,有几种方法可以缓解它,一种是在 JS 中运行一个计时器循环寻找 #canvas_frame 并在找到它时停止它,另一种是侦听 DOM 节点插入事件,如果您正在寻找的元素已入, 开始做你想做的事情。

虽然canvas_frame一直是 Gmail 与之交互的"内容区域"元素,如果这是您需要做的,目前(截至几天前)我遇到了没有content_frame的 Google Apps Gmail 实例,或者更确切地说,在页面加载时立即有一个,然后它被删除, 我不确定谷歌在做什么恶作剧,但由于他们没有提供制作 Gmail Chrome 扩展程序的官方 API(非常不幸的是),我们作为扩展开发人员任由他们摆布......