【问题标题】:Firefox add-on sdk: Finding total number of nested iframes(cross domain) in a page?Firefox 插件 sdk:查找页面中嵌套 iframe(跨域)的总数?
【发布时间】:2023-04-06 12:29:02
【问题描述】:

我想使用 Firefox 插件 sdk 编写扩展程序,并且我需要知道一个页面的所有 iframe(嵌套的,可能是跨域的)的总数。为此,我使用了 pageMod 和以下 contentScript(每个 iframe 都会向顶部窗口打招呼,因此我们可以跟踪它们的编号):

setTimeout(function(){
         window.top.postMessage('I am a new iframe, url : ' + window.location.href
        ,'*');
},1000);

我通过以下代码收听来自 iframe 的消息:

window.addEventListener('message',function(event) {
                number_of_frame++;
        },false);
有没有更简单的方法来做到这一点?是否有任何 API 可以为我提供此功能,以便我可以避免在任何 iframe 和顶部窗口之间传递消息?

【问题讨论】:

    标签: javascript iframe firefox-addon-sdk


    【解决方案1】:

    如果我没有打错字,那么这个未经测试的代码会做你想做的事。它将自己添加到当前window 中所有iframes 的body 中,然后iframes 将自己变为当前windows。 iFrameCount 从 -1 开始,因为我们也会计算主要的 window

    var iFrameCount = -1;
    
    var scriptToInject = '<script type="text/javascript">window.top.iFrameCount++;$("iframe").each(function() {$(this).contents().find("body").append(window.top.scriptToInject);});</script>';
    $("body").append(scriptToInject);
    

    【讨论】:

    • 对于所有 iframe 都来自同一来源的情况,这是一个很好的答案,但在跨域 iframe 的情况下,我无法访问主窗口中的全局变量。
    • 好点。您可以通过在其中发送请求的 API 函数来做到这一点。
    猜你喜欢
    • 2013-02-11
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 2013-09-11
    • 1970-01-01
    相关资源
    最近更新 更多