2009-12-15 69 views
3

我有一个lightwiehgt插件Firefox需要注入一个脚本到HTML中。 的代码看起来是这样的:从overlay.js获取HEAD元素firefox插件

var head = document.getElementsByTagName("head")[0]; 
var newscrpt;  
newscrpt = document.createElement('script'); 
newscrpt.type = "text/javascript" ; 
newscrpt.src = "http://blabla.com/..."; 
newscrpt = head.appendChild(newscrpt); 

的问题是,document.getElementsByTagName("head")[0]返回“不确定”,并检查document.getElementsByTagName("head").length为0

它目前执行的浏览器document.onLoad事件,但我也试图调用它从window.setTimeout,以确保它不是加载同步问题,但同样的情况发生。

任何人的想法? 谢谢!

+0

可能这是一个greasemonkey userscript?在这种情况下,出于安全考虑,您可能需要访问'unsafeWindow.document'。 – 2009-12-15 10:58:33

+0

没有。不是油门钥匙脚本... – nivhab 2009-12-15 11:13:12

回答

2

我今天刚刚有类似的问题,并设法找到解决方案。您的帖子是从1个月前,所以不知道你是否已经解决了你的问题。下面的链接可以回答你的问题:https://developer.mozilla.org/en/Working_with_windows_in_chrome_code

+0

是的,OP需要先获取内容窗口。 – Nickolay 2010-01-17 15:41:22

+0

链接已死“服务不可用,服务暂时不可用,请稍后再试。”你能否包括这个问题的答案? – 2011-11-14 12:40:30

0

如果您使用的是frameiframe对象,你不应该引用document直接,但这样做:

var doc = frame.contentWindow.document; 

后,你可以得到头。我正在使用jQuery向它添加一些资源:

$(doc).find('head').append(
       '<link type="text/css" rel="stylesheet" href="MyStylesheet.css" />'); 

希望它有帮助。