我正在开发一个Chrome扩展程序,可以找到来自哪个iframe的请求。现在我可以通过听chrome.webRequest来获取frameId,这样我就可以获得frameId(请参阅链接中的frameId部分,而不是iframe标记中的id属性)。
我可以使用此frameId查找iframe吗?我想要的只是检索iframe标签的属性,如名称,宽度和高度。
由于
以下是Xan以下答案的工作代码。
//frameScript.js
(function() {
var body = document.body,
html = document.documentElement;
var height = Math.max( body.scrollHeight, body.offsetHeight,
html.clientHeight, html.scrollHeight, html.offsetHeight );
var width = Math.max( body.scrollWidth, body.offsetWidth,
html.clientHeight, html.scrollWidth, html.offsetWidth );
return {
width: width,
height: height
}
}());
//background.js
chrome.tabs.executeScript(currentTabId, {
allFrames: true,
file: 'frameScript.js'
}, function(data) {
console.log(data);
});
答案 0 :(得分:0)
您可以使用框架ID将内容脚本注入到确切的框架中(您需要主机权限,但是您已经将它们用于webRequest)。
从那里,您可以获得宽度和高度以及name。恰好可以从框架内部访问这些特定属性 - 这不是获取<iframe>
元素本身的一般解决方案。
chrome.tabs.executeScript(
tabId,
{frameId: frameId, file: "content.js"},
function(data) { console.log(data[0]); }
);
// content.js
// Evaluate something to return it
{
name: window.name,
height: window.innerHeight
width: window.innerWidth
};