2013-02-14 21 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標記內部有腳本,所以它只會在沒有幀支持的瀏覽器上顯示。