2011-11-01 45 views
2

iframe内如果我创建一个元素与...的createElement只在主文档不在文档

var elm = document.createElement("p"); 
document.body.insertBefore(elm, document.body.firstChild); 

我得到了每一个body元素中这对元素 - cooool!
而且在主文档中每一个IFRAME体。

我怎么能定义只是在maindocument创作? 有点像?

document.body.firstChild.ownerDocument 

(脚本应该做的是通过Safari扩展从injected.js工作)

+0

我会摆脱计算器远。我觉得被指责“管理员” – frank

回答

0

我得到这个对每一个元素body元素中 - cooool!

您应该只在文档所具有的一个单一主体中获取它。

而且在主文档中每一个IFRAME体。

这些是单独的文档,除非您在嵌入式文档中包含该代码,否则该代码不应触摸它们。

如果你包括这些文件中的代码,那么你可以测试一下,看看如果你(不)在一个框架:

if (top === window) { 
+0

花式 - 本土 - 简单 - 工作!非常感谢你。 – frank

0

插入到体内的firstChid:

var elm = document.createElement("p"); 
var body = document.body; 
body.insertBefore(elm, body.firstChild); 

编辑:http://jsfiddle.net/vgbsf/1/

+0

这将错误作为'document.body [0]'将'未定义'。 – Quentin

+0

@Quentin您的权利 - 更新和验证 – ManseUK

+0

没有,除了存储'document.body',你的代码是相同的,原来的问题的。 – Quentin

0

如果我正确理解你的问题,你可以使用jQuery:

$('body').prepend("<p>im new here...</p>")

检查 - http://jsfiddle.net/HLQ8W/

+0

多数民众赞成在.. ..但我想要一个非jQuery的解决方案。是一个由在这种想法不降低从而pageloading Safari浏览器的性能驱动..因为扩展,将在每一个页面加载,只是为了做这个工作..我真的想同样的想法,作为第一.. – frank

+0

并通过方式,原生javascript尽可能兼容。 :-P – frank