content.js
文件注入当前页面DOM content.js
构建了一个DIV模态窗口。在该模式中,按下按钮时会向chrome extensions background.js
文件发送消息,告诉它构建整页截图图像。 display: none;
content.js
和background.js
脚本之间来回发送消息,以便它能够逐帧捕捉视图端口的图像建立一个全高度的图像。 background.js
脚本会打开一个新文件edit.html
,这是我的扩展程序中的自定义页面,其中包含一个完整的图像注释库来编辑图像。 edit.html
文件开始,当图像完成编辑时,它使用AJAX使用AJAX将新图像上传到我的远程服务器,并返回新图像上传的URL。 edit.html
文件/标签并使用新图片网址发送回原始网页content.js
的消息,还有一条消息告诉它取消隐藏该页面上的模态窗口,并将新图像URL插入该模式窗口中的文本输入字段。 我已经完成了所有这些工作,直到我需要:
edit.html
文件/标签content.js
脚本发送一条消息,其中可能包含显示模态窗口的消息,并包含我们构建,编辑,然后上传到远程服务器的屏幕截图的图像URL。 1)
有关如何关闭edit.html标签并将焦点恢复到原始标签页的任何帮助吗?
我相信edit.html页面必须向background.js
文件发送消息以关闭自身,然后该background.js文件还可以向原始标签content.js文件发送消息并带来焦点再来一次。只是不确定如何做这部分。主要知道哪个标签是原始标签。
答案 0 :(得分:2)
如果内容脚本使用chrome.runtime.connect()
将消息发送到后台页面,则后台页面可以从port.sender.tab.id
获取选项卡ID,其中“port”是端口对象的名称。后台页面可以将选项卡ID传递给新的edit.html
页面,方法是将其放在用于打开新选项卡的URL的搜索字符串中,例如。 chrome.tabs.create({url: "edit.html?23"})
。由于edit.html
页面是您的扩展程序的一部分,因此可以使用chrome.tabs.update()
来关注原始页面,并且可以使用chrome.tabs.getCurrent()
来获取自己的标签ID,然后使用{{1 }}。它可以使用chrome.tabs.remove()
或使用chrome.tabs.sendMessage()
来访问后台页面的窗口对象,从而使其能够使用后台页面和后台页面之间的现有消息端口,从而向内容脚本发送消息。内容脚本。