2010-12-07 83 views
0

我有一個包含iframe的HTML頁面,我正在嘗試在iframe中的鏈接上編寫函數。該功能將在HTML頁面中進行更改...jquery iframe src

以下腳本適用於在iframe中單擊的第一個鏈接。但是,當iframe佔據「src」時,該功能將不再起作用。

即使iframe的src被更改,我如何使它工作?

(所有頁面都在同一個域)

<script type="text/javascript"> 
    $("iframe").contents().find("a").click(function() { 
    alert('Load was performed.'); 
    }); 
</script> 
+0

這是我如何sloved它: VAR chooseName = $( 'IFRAME'); chooseName.load(function(){ chooseName.contents()。find('a')。click(function(){ alert('Load was performed。'); }); }); 注意:來自Omeid Herat的評論如下。該腳本不適用於跨域。即使它是一個子域。 Stackoverflow岩石!肯定會使用它agin :) – Hakan 2010-12-08 13:38:15

回答

1

嘗試使用.live()方法,它將事件綁定到現有元素和未來元素。當您更改src時,您需要再次將點擊事件綁定到新鏈接。

我不知道,如果.live()方法工作在一個iframe中,但你可以試試這個:

$("iframe").contents().find("a").live('click',function() { 
    alert('Load was performed.'); 
    }); 

對不起,我蹩腳的英語!

我不知道它是否會起作用(抱歉,我現在沒有在哪裏測試東西),但是如果嘗試在iframe的onLoad事件上綁定函數,會發生什麼(即使W3C說該iframe有沒有活動,它似乎被所有瀏覽器都支持):

<iframe src="/my_contents" onLoad="onload_function()"></iframe> 
    ... 
    <script> 
     onload_function(){ 
      $(function(){ 
      $("iframe").contents().find("a").click(function() { 
       alert('Load was performed.'); 
      }); 
      }); 
     } 
    </script> 
0

如果在您的域名相同它應該工作,如果不是因爲Some Origin polciy它不會爲跨域工作。

+0

只要我留在相同的iframe,它就會工作。但是,如果iframe重新加載一個新的url,它不起作用。 – Hakan 2010-12-07 15:26:35

+0

只要我保持在同一個iframe上,它就可以工作。但是,如果iframe重新加載一個新的url,它不起作用。 所有URL:s和src是相同的域... 感謝您回答任何方式:) – Hakan 2010-12-07 15:34:38