2011-11-24 94 views
0

我有一個iframe來預覽一些數據。HREF屬性在IFRAME中不起作用

的數據被存儲在一個JavaScript變量:

var s = '<html><head></head><body><a href="#">Hello_world</a></body></html>'; 

我通過Javascript傳遞數據[passing s]到的IFRAME SRC屬性。

下面是代碼:

document.getElementById('output_iframe1').src = "data:text/html;charset=utf-8," + escape(s); 

所以數據被加載上的iframe除了<a>元件。我可以看到text,但不是鏈接。然而,元素事件工作正常(點擊,懸停等)。

我通過Firebug進行了檢查,所有工作都很順利。

我在Firebug上將HREF屬性更改爲http://somesite/file.html,並且令人驚訝的是它工作正常,但不是#

其實我在做什麼錯? 爲什麼我不能看到LINKS沒有http://

謝謝。

更新1:我用最新的Firefox 8.0測試,它工作得很好,也與谷歌瀏覽器檢查[效果很好,但點擊消失的所有環節的任何鏈接],Yeah as usual IE failed in all cases,it looks like IE doesn't know what is an Iframe

+1

首先糾正你的第一行代碼。您可能希望在您的href屬性周圍使用單引號 – Pierre

+0

@Pierre對不起,這是人爲錯誤,已更正。 – Red

回答

0

使用href =「javascript:void(0)」而不是href =「#」。

OR

因爲您將其分配給src屬性,您需要在申請前的字符串編碼。這是因爲,通常src值是url,有時在瀏覽器url中使用「#」。希望你明白我在說什麼。 使用encodeURIComponent()或encodeURI()。看到這裏的語法 http://www.w3schools.com/jsref/jsref_encodeuricomponent.asp

+0

所以我需要找到字符串中的所有'a'元素並將'HREF'改爲別的東西?如果我使用'javascript:void(0)'會發生什麼?我必須使用jQuery單擊事件。 – Red

+0

當你使用javascript:void(0)你仍然可以在jQuery中使用click事件。 我避免在我的代碼中隨處提供href =「#」,並將其設置爲javascript:void(0),它可以工作,並且我可以隨意使用js或jQuery進行任何類型的操作。 – Ashwin

+0

Okkey,讓我試試,但它適用於Firefox和Chrome [有一些問題],怎麼樣? – Red

0

試試這個

var s = "<html><head></head><body><a href='#'>Hello_world</a></body></html>"; 

取而代之的是

var s = "<html><head></head><body><a href="#">Hello_world</a></body></html>"; 
+1

抱歉,輸入的錯誤[請不要介意],請參閱更新後的問題。 – Red

+0

好吧對不起,我會檢查更新的問題;) –