正如标题所暗示的那样,我正在尝试使用内容脚本或任何其他编程方式来操纵iframe中显示的网站,该网站位于我的Chrome扩展程序的弹出式HTML文件中。 iframe的src将是第三方网站。
我通常从chrome扩展程序的后台页面执行内容脚本的方式如下:
//background.js
chrome.contextMenus.create({
title: "xxx",
contexts:["page"],
id: "ctx1"
});
chrome.contextMenus.onClicked.addListener(function(info,tab) {
if(infoItemId === "ctx1"){
console.log("control worked")
control(info,tab)
}
});
function control(info,tab) {
chrome.tabs.executeScript(tab.id,{file:"content.js"});
}
或
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
alert(JSON.stringify(tab) +"\n\n")
chrome.tabs.executeScript(null,{"file":"content.js"});
})
我可以使用以下代码从后台页面访问iframe:
var views = chrome.extension.getViews({type:'popup'});
var iframe = views[0].document.getElementById("Frame1") // "Frame1" id the id of my iframe HTML element as declared in my popup.html file
我不确定如何重新配置我的后台页面,以便将popup.html页面中的iframe作为目标,而不是活动的浏览器标签。我想我需要将上下文菜单的“contexts”属性更改为“frames”或“browser_action”,并且我可能需要创建一个与我的popup.html文件具有相同URL的新选项卡。我花了很长时间研究这个问题,几乎没有取得任何进展,所以任何帮助都将不胜感激。