Chrome - 通过frameId查找iframe(不是id属性)

时间:2016-11-03 18:41:18

标签: javascript iframe google-chrome-extension

我正在开发一个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);
                });

1 个答案:

答案 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
};