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

Dar*_*man 5 html javascript iframe jquery 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>
Run Code Online (Sandbox Code Playgroud)

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

现在让我们开始谈正事吧。我正在使用此 JS 代码将我的 JS 上下文置于<iframe>名为“iframe”的第一级

window.frames['iframe'].showAssetPicker();
Run Code Online (Sandbox Code Playgroud)

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

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

window.frames['iframe'].frames['iFrame2'].populateTypePullDown('/getdata/');
Run Code Online (Sandbox Code Playgroud)

我也尝试过

window.frames['iframe'].window.frames['iFrame2'].populateTypePullDown('/getdata/');
Run Code Online (Sandbox Code Playgroud)

两者似乎都不起作用。有什么帮助吗?我正在使用 node-webkit 来删除<iframe>安全限制。

感谢您为我提供的任何帮助!

PS 天哪,我<iframe>在这篇文章中说了太多次了。

huy*_*itw 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();
Run Code Online (Sandbox Code Playgroud)