在iFrame中将Javascript上下文设置为iFrame

时间:2015-05-05 18:53:11

标签: javascript jquery html5 iframe nw.js

我有一个<iframe>的页面,其中<iframe>另一个<iframe>弹出窗口。我试图做的是调用<iframe> <iframe>中设置的函数....我知道,同一个标签的批次很多上。

这就是我在HTML格式中的意思。

<body>
 <iframe src="blahblah.html" name="iframe">
  //blahblah.html html
  <iframe src="blahblahpopup.html" name="iFrame2">
   //blahblahpopup.html html, also where the function is set.
  </iframe>
 </iframe>
</body>

因此,正如您所见,<iframe>中有一个<iframe>

现在让我们开始做生意。我使用这个JS代码将我的JS上下文放到第一级<iframe>,名称为&#39; iframe&#39;

window.frames['iframe'].showAssetPicker();

它的作用是调用第一级<iframe>内的弹出窗口。但是现在我需要在刚刚调用的弹出窗口内调用一个函数。 (这是另一个<iframe> ...我不是所有<iframe>的原因......)

所以,我尝试调用第二级<iframe>中定义的函数失败...

window.frames['iframe'].frames['iFrame2'].populateTypePullDown('/getdata/');

我也试过

window.frames['iframe'].window.frames['iFrame2'].populateTypePullDown('/getdata/');

似乎都没有用。对此有何帮助?我使用node-webkit删除<iframe>安全限制。

感谢您提供任何帮助,您可以自由选择!

P.S。善良亲切,我在这篇文章中说<iframe>太多次了。

2 个答案:

答案 0 :(得分:3)

问题可能是您在资产选择器加载之前没有等待,因此尚未定义函数populateTypePullDown

尝试这样的事情:

$('#iframe')
    .ready(function() {
        var $innerIframe = $(this).contents().find('#iFrame2');
        console.log($innerIframe, 'ready');
        $innerIframe.get(0).contentWindow.populateTypePullDown('/vsg/ipm/SecuredOfferRepository');
    })
    .get(0).contentWindow.showAssetPicker();

答案 1 :(得分:1)

找出答案。我做的是我到达主<iframe>内部,并获得了内部<iframe>的contentWindow。

$('#iframe').contents().find('#iFrame').get(0).contentWindow.performSearch();