我在jsBin中有以下代码: http://jsbin.com/iRoROvu/1/edit
它基本上在iframe中有一个锚点。如果您点击该链接,您会看到Chrome中没有任何操作,但在Firefox中它只是空白。
这是jsFiddle中的相同代码: http://jsfiddle.net/LbNwd/
JavaScript的:
var previewFrame = document.getElementById('preview');
var preview = previewFrame.contentDocument || previewFrame.contentWindow.document;
preview.open();
preview.write("Hello World!<br/><a href='#'>Click me!</a>");
preview.close();
HTML:
<iframe id="preview"></iframe>
在这种情况下,如果你使用Firefox,它会在现有的iframe中创建另一个iframe ......并继续这样做......就像'Inception'。但是相同的代码在Chrome中运行良好。
谁能告诉我为什么?
答案 0 :(得分:1)
是。您应该使用href='javascript:void(0);'
代替href='#'
OR
您可以改用<a href='#' target="preview">Click me!</a>
。
我认为添加target="preview"
也可以解决您的问题。
只需尝试一次&amp;让我们知道它的工作与否。
答案 1 :(得分:0)
实际上,这可能是愚蠢的,但我不喜欢哈希标记,这就是我尽可能使用javascript://
的原因,但对于您的情况,我确信您是否更换了href
值或者href='javasctipt:void(0)'
它将解决这个问题,问题是,我认为,浏览器将哈希标记视为要浏览的新网址,这就是为什么我不使用它,我希望它适合你
答案 2 :(得分:0)
为什么呢?这很有趣,但“初始”行为与“页面顶部”对iFrame中的Firefox意味着什么有关。如果您使用#top
,则会获得same results。
理想情况下,你应该使用Labib的答案中提到的href ='javascript:void(0)',但既然你提到它不受你的控制,那么你似乎需要一个黑客。
真正难看的方法是搜索正在为href="#"
打印的输出并替换它。
但是在这种情况下,我觉得最好先发现事情已经变坏,并在那时做点什么,比如:
if (frameElement && frameElement.id === 'preview') {
// Think of something clever here, like
parent.location = parent.location;
}