Crossrider:扩展无法找到动态生成的iframe(IE 11)

时间:2016-05-13 18:33:35

标签: internet-explorer browser-extension crossrider ieaddon

我正在创建一个IE 11附加组件,它可以读取SVG元素,用其他HTML包装,然后用新生成的HTML打开弹出窗口以打印它。

我面临的问题是即使我在我的设置中打开了“在IFrame中运行”。该扩展程序无法在页面上找到大多数iframe。请注意,我正在制作此附加组件的网站是https://app.powerbi.com。 PowerBI是使用Angular构建的,iframe正在动态加载。

这是我的代码:

background.js

appAPI.ready(function($) {
    appAPI.browserAction.setResourceIcon('icon.png');

    appAPI.browserAction.onClick(function() {
       appAPI.message.toActiveTab('print');
    });
});

extension.js

function tryPrint($) {
    console.log('===', document.location.href , '===')
}

appAPI.ready(function($) {
    appAPI.message.addListener(function(msg) {
       if(msg === 'print') tryPrint($); 
    });
});

使用上面的代码,当我单击浏览器中的加载项按钮时,我只看到这些输出:

  

=== https://app.powerbi.com/groups/me/reports/4dba04c3-8c3e-4e9e-abb8-a1fa58165928/ReportSection ===
  === https://app.powerbi.com/ewaIsolation.cshtml ===

但是,以下iframe会动态添加到页面中,并且看起来扩展程序无法找到它。

<iframe sandbox="allow-scripts" name="visual-sandbox" class="visual-sandbox" src="/sandbox?plugin=YourVisual1456308971941" style="width: 1630.17px; height: 922.83px;"> . . . </iframe>

1 个答案:

答案 0 :(得分:0)

在iframe中运行功能旨在运行加载时页面上存在的iframe。因此,它不会在动态加载的iframe上运行。

[披露:我是Crossrider员工]