如何在iframe之外注入javascript以在全局范围内执行

时间:2013-08-02 19:58:24

标签: javascript jquery

希望我这么想......

这是我的情况: 我有一个在iframe中运行的html,它调用控制器来获取一个带有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之外,我甚至尝试将范围文件移动到头标记而没有运气..

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

如果您可以在主页中执行ajax调用,那么为什么页面的iFrame会对控制器/ myview执行ajax调用?如果你在主html页面中进行ajax调用,你可以在它自己的范围内处理它,这应该消除整个范围问题,并且当你在它时也摆脱冗余的iFrame。对不起,如果我误解了你的问题,那就有点混乱了。

答案 1 :(得分:0)

是window.top ......真的把你带到了父母身边吗? 有关更多评论/代码,请参阅How to access parent Iframe from javascriptJavaScript dynamically loaded into iframe runs in parent scope

另外请记住,你无法从iframe获取父母的数据 - 如果你能找到注册mybank.cn的方法,并将其加载到iframe中的mybank.com,占用所有空间,然后窃听mybank。 iframe中的com。