0

希望我问这个正确..

这是我的情况:我在 iframe 中运行 html,该 iframe 调用控制器以获取其中引用的 javascript 文件的视图。

所以..主页:

<html>
<body>
<iframe src="page2.html" />
</body>
</html>

page2.html:

<html>
<body>
<script>
$.ajax({
  url: "controller\myview",
  type: "POST",
  data: null,
  dataType: "html"
}).done(function(view) {
 var body = $(window.top.document.body);
 body.append(view);
});
</script>
</body>
</html>

myview 发回一个典型的,但在其底部有一个标签,用于创建表单的对话框。这里的重点是在 iframe 之外获取 jquery ui 对话框,当我检查 DOM 时它在 iframe 之外;但是,当现在在主页中的 javascript 执行时,它似乎认为它直到 iframe 中。

看起来我有范围问题,但我不知道如何解决它。我曾希望如果我将脚本标记放在主页中,它会将自身范围限定在 iframe 之外,我什至尝试将范围文件移动到 head 标记,但没有成功。

有什么建议么?

4

2 回答 2

1

当您可以在您的主页中进行 ajax 调用时,为什么您有一个页面的 iFrame 对控制器/myview 进行 ajax 调用?如果您在主 html 页面中进行 ajax 调用,您可以在它自己的范围内处理它,这应该消除整个范围问题,并在您使用它时摆脱多余的 iFrame。抱歉,如果我误解了您的问题,这有点令人困惑。

于 2013-08-02T20:31:25.110 回答
0

window.top... 真的是带你去找家长吗?有关更多评论/代码,
请参阅如何从 javascript 访问父 iframe动态加载到 iframe 中的 JavaScript 在父范围内运行。

还要记住,您无法从 iframe 获取数据到父级 - 如果可以的话,您可以注册 mybank.cn 并将 mybank.com 加载到 iframe 中,占用所有空间,然后窃听 mybank.com 中的框架。

于 2013-08-02T20:39:37.540 回答