2011-03-24 41 views
1

我正在使用jQuery和Ruby On Rails。 我有一個Ajax調用$.get()這使得包含iframe的jQuery iframe訪問只在Firefox中第一次工作

我想修改的iframe,以確保<a>鏈接在新窗口中打開HTML的一部分。

要做到這一點,我已經添加一個onload到的iframe定義:

<iframe id="iframe_message_<%= message.id %>" class="iframe_message" name ="iframe_message_<%= message.id %>" width="100%" frameborder="0" src="<%= message.attachments.body_html.first.document.url %>" onLoad="autoResize('iframe_message_<%= message.id %>');"> 

autoResize功能是通過Ajax調用呈現的HTML定義,包含:

$(".iframe_message").ready(function() { 
    $('a', frames[id].document).attr('target','_blank'); 
}); 

這工作正常在IE瀏覽器中,但Safari瀏覽器遇到問題,第一次點擊鼠標時調用$.get(),但沒有點擊下面的頁面(<a>標籤未被修改)。

我想到了一個緩存問題,並用$.ajax()替換$.get()cache:true,但我仍然有相同的行爲。

關於可能是什麼問題的任何想法?

回答

0

我去jQuery的網站,看着.content描述 和我的「工作」的代碼是

$("#"+id).contents().find("a").attr('target','_blank'); 

其中"#"+id是我的iframe的ID。

0

很難說清楚你的描述,但你的jquery可能需要從iframe中調用。將iframe視爲一個單獨的網頁。

+0

你好,謝謝你的回答。我沒有訪問iFrame,直到它加載到我的頁面上,所以我不能把JavaScript放入它。此外,除了Firefox – tranquiliste 2011-03-24 08:04:54

+0

之外的其他瀏覽器的這項工作我已經做了進一步的測試,奇怪的是,在第一次調用firefox時,iframe中的所有鏈接都使用target =「_ blank」進行了修改,當單擊第二次修改了iframe之外的所有lin,而不是iframe。 – tranquiliste 2011-03-26 07:08:41