2013-02-14 22 views
0

我在javascript中是一个小菜鸟,所以帮助我。我有这个在我的身体标记的底部:Iframe中的JavaScript不是正在执行

<iframe id="scriptFrame" name="scriptFrame" height="0" width="0"> 
<script type="text/javascript" language="javascript"> 
alert("Hello World"); 
parent.alert("Hello world"); 
function foo() 
{ 
    alert("Hello World"); 
} 
</script> 
</iframe> 

两个警报弹出。我究竟做错了什么?我尝试添加html和head标签,但没有帮助。我也想这样做的document.getElementById( 'scriptFrame')。contentWindow.foo()和帧[ 'scriptFrame']。FOO(),但既不工作

回答

1

iframe的内容永远不会呈现。在iframe中指定某些内容时,这是使用src属性加载的内容的回退(对于不支持iframe的浏览器)。

因此,要么为iframe使用onload,要么将iframe的内容放在单独的页面中,并在src-attribute中指定它。

+0

您是对的。感谢你和所有其他答复者! – ForeverNoobie 2013-02-14 15:41:35

0

您必须在iframe <html><script>标签必须是在<head><body>

此外,请注意<script>language属性已被弃用。

+0

你可以倒计时,但这就是为什么JS没有执行。 – marekful 2013-02-14 15:14:00

+0

看来我错过了一些东西,最后我见过在'iframe'标签之间使用内联代码,是在IE5之类的东西......?这里到底发生了什么? – Teemu 2013-02-14 15:23:42

+0

更多在@Bhushan Firake是对的。我忽略了你试图向你的iframe添加内容的事实。 iframe必须具有'src'属性并将文档拖入。 – marekful 2013-02-14 15:28:09

0

如果您尝试加载IFRAME时运行JavaScript,试试这个:

<html> 
    <head> 
     <script type="text/javascript"> 
      function someFunction(){ 
       //some stuff here 
      } 
     </script> 
    </head> 
    <body> 
     <iframe id="scriptFrame" name="scriptFrame" height="0" width="0" onload="someFunction();"></iframe> 
    </body> 
</html> 
2

注意,你不能直接添加任何内容为标签。即使使用JavaScript,只有iframe中的页面来自与父页面相同的域时,才可以添加内容。 所以,你必须做以下几点:

<html> 
<body> 
<script > 
function foo() 
{ 
    alert("Hello World"); 
} 
</script> 
<iframe id="scriptFrame" onload="foo()"name="scriptFrame" height="0" width="0"> 
</iframe> 
</body> 
</html> 

从iframe中调用父JS功能可能,但只有当父母和在iframe中加载的页面是从同一个域即ABC。 com,并且都使用相同的协议,即都在http://或https://上。

电话会议将在下文提到的情况下失败:

  1. 父面和iframe页面来自不同的域。

  2. 他们使用不同的协议,其中一个在http://上,另一个在https://上。

对此限制的任何解决方法都是非常不安全的。

例如,假设我注册了域superwinningcontest.com并发送了链接到人们的电子邮件。当他们加载主页时,我可以在那里隐藏一些iframe并阅读他们的Facebook feed,查看最近的亚马逊或PayPal交易,或者如果他们使用的服务没有实现足够的安全性,账户。这就是为什么JavaScript限于同域和同一协议。

1

您必须使用iframe的src属性和iframe加载其内容的URI。

内嵌插入的信息由此元素的src属性指定。另一方面,IFRAME元素的内容只应由不支持框架或不配置为显示框架的用户代理显示。

您在iframe标记内部有脚本,所以它只会在没有帧支持的浏览器上显示。