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

好吧对不起,我会检查更新的问题;) –