0

我正在制作一个 chrome 扩展(内容脚本),它将在 gmail 顶部黑条的“更多”之后添加文本。这些元素被封装在canvas_frameiframe 中。

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

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

我明白了Uncaught TypeError: Cannot read property 'document' of undefined。但是,如果我将该代码直接输入到 chrome 开发人员控制台中,它就可以工作。为什么是这样?如何从我的 chrome 扩展中访问和修改该元素。

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

4

2 回答 2

0

Try

document.getElementById('canvas_frame').contentDocument.document.getElementById('gbz').innerHTML = src;
于 2012-08-15T04:49:44.403 回答
0

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

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

于 2012-09-24T15:17:07.290 回答