2014-10-03 23 views
0

所以我有一個頁面將列出名爲'enews'的文件夾中的任何enewsletter(純html) 當用戶單擊列表時,html頁面將顯示在iframe (仍在同一頁)jquery第一次嘗試時無法訪問iframe

<ul><li><a class="iframesrc" href="/enews/today.html" target="viewcontent">Today</a></li> 
    <li><a class="iframesrc" href="/enews/yesterday.html" target="viewcontent">Yesterday</a></li> 
</ul> 
<iframe id="viewcontent" name="viewcontent"></iframe> 

enews的html頁面不是由我製作的,所以我沒有完全控制頁面的方式。並且所有文件仍然在同一個域中。

所以我可以顯示iframe中的html頁面沒有問題。我老闆想要做的唯一事情就是讓HTML頁面中的每個超鏈接都在新標籤頁/窗口中打開。

當然,我可以直接在enewsletter html頁面中添加「target = _blank」,但它不可行,因爲我們有超過100個,我不能手動去做,再加上負責人不會沒有編程技巧,所以他實際上只是改變html的內容。

現在,有沒有辦法做到這一點?

我試圖使用jquery訪問iframe內容(要添加),但它不能很好地工作。

<script> 
$(document).ready(function() {  
    $('a.iframesrc').click(function() { 
     console.log("clicked enewslink"); 
     var link = $(this).attr("href"); 
     console.log(link); 
     $("#viewcontent").attr("src",link);   
     $("#viewcontent").ready(function() { 
      var content = $("#viewcontent").contents().find("body").html(); 
      console.log(content); 
     }); 
    }); 
}); 
</script> 

因此,當加載頁面時,我點擊「今天」,控制檯DOES檢索鏈接​​的href,但iframe的「內容」爲空加的iframe雖然會顯示正確的內容。 當我點擊「昨天」,控制檯可以檢索鏈接href,但這次iframe的「內容」是打印輸出(在控制檯中),iframe也顯示正確的內容。

爲什麼瀏覽器不能在第一次點擊時捕獲鏈接?

感謝和任何幫助,非常感謝。

編輯: 首先點擊: can't get the html page

在第二點擊: you can see the <table><tr>blablabla - the content of enews

+0

只有當前文檔有一個'ready'處理程序,您的iFrame元素不**沒有準備好的處理程序。 – adeneo 2014-10-03 04:14:12

+0

@ adeneo嗨,我刪除了這部分,它沒有區別。謝謝 – user2960754 2014-10-03 04:15:11

回答

1

我做了如下改變你原來的代碼:

  • iframeviewcontent的變化id
  • 更改$("#viewcontent").ready(...)$("#viewcontent").load(...)
  • 移動$("#viewcontent").load(...)$('a.iframesrc').click(...)(以便它被點擊的第一次鏈接時已綁定)

,它似乎是現在的工作。

下面是修改後的(部分)代碼:

的IFrame:

<iframe id="viewcontent" name="myiframe"></iframe> 

腳本:

<script> 
$(document).ready(function() {  
    $('a.iframesrc').click(function() { 
     console.log("clicked enewslink"); 
     var link = $(this).attr("href"); 
     console.log(link); 
     $("#viewcontent").attr("src",link);   
    }); 
    $("#viewcontent").load(function() { 
     var content = $("#viewcontent").contents().find("body").html(); 
     console.log(content); 
    }); 
}); 
</script> 
+0

嗨,很抱歉,我已經編輯了我的代碼。其實iframe和javascript的ID是正確的,我只是在這篇文章中輸入錯誤。謝謝 – user2960754 2014-10-03 06:35:07

+0

沒問題:)我希望解決方案能爲你工作。 – 2014-10-03 07:46:07

相關問題