2012-10-06 25 views
0

嘿家伙我试图添加一个iframe到页面使用append。在Firefox中,它添加了一个空的iframe,但在Chrome中它的工作原理应该如此。只有当windowLocation是window.location时,才会附加空的iframe。当我将其更改为其他网址时,它可以正常工作。使用jQuery添加一个iframe使用变量src

$("#button").click(function() { 
var windowLocation = window.location; 
$("body").append('<iframe id="fullFrame" width="1000" height="1000"></iframe>'); 
$("#fullFrame").attr("src", windowLocation); 
}); 
+0

您正在尝试创建无限嵌入循环。 – jfriend00

回答

0

对我来说,这看起来像这样会创建一个递归。根据框架集的一些旧规格,在这种情况下,这种框架应被视为空:http://www.w3.org/TR/WD-frames-970331#nesting

因此,也许Firefox实现了这种行为。

+0

为什么它应该创建一个循环,而不是在主文档中创建文档的iframe?这不应该与其他任何iframe有所不同。 –

+0

不好意思,事实上它不会在iframe被自动插入之前创建一个recusion,但根据规范它是关于URL的所有内容,所以Firefox可能根本不在意用户操作插入了框架。 – ndm

+0

我只是用document.location.hostname对它进行了测试,所以它返回我的域名,它仍然是一个空的iframe。 –

0

有人可能会问为什么你自己嵌入自己的网页的副本?这可能会产生某种浏览器可能试图阻止的无限嵌套问题。 iframe将自身嵌入自身中,嵌入自身中,除非您的代码或浏览器阻止发生这种情况,否则它永远不会停止,直到所有内存或其他资源耗尽为止。

至于清理代码,我建议改变这个代码:

$("#button").click(function() { 
var windowLocation = window.location.href; 
$("body").append('<iframe id="fullFrame" src="' + windowLocation + '"width="1000" height="1000"></iframe>'); 

}); 

这改变了两件事情。首先,它使用位置对象的href属性来获取URL,其次,它创建并插入iframe,并且.src属性已经就位。

+0

嘿谢谢你的回答。我的代码实际上看起来像这样,但我在添加iframe之后在stackoverflow中看到了一个添加属性的人。无论如何,这仍然不起作用。我的项目非常具体,这就是为什么我这样做。 –

+0

@ChristianIvanov - 你似乎无法理解无限的嵌入问题。这试图将当前文档嵌入到当前文档中。当它加载到iframe中时,iframe文档将再次尝试将自身嵌入到自身中。当iframe加载时,它会再次尝试将自己嵌入到自身中,直到某些东西强制它停止嵌入或耗尽资源时才会停止。 – jfriend00

+0

当在主文档上按下按钮时,会触发这种情况,只有当再次按下iframe中的按钮时,iframe中的iframe才会发生。这不是发生了什么事。它嵌入了一个空的iframe,如果iframe循环的情况下,它不会在Chrome中工作。 –