2010-02-24 38 views
3

长话短说我正在研究Google Chrome扩展程序。扩展名默认情况下无法访问他们正在操作的页面范围内的变量(您需要通过DOM进行通信)。用Javascript动态插入脚本

我想要做的是在页面中插入一个脚本;这可以通过定义脚本标记和src属性很好地工作。

问题是这个脚本需要事先初始化一个变量。为了初始化这个变量,我试图用它的代码内联构建一个脚本元素(而不是从外部源加载),但是我无法使它工作。

这是可能的,如果是这样,我如何在脚本中定义源代码?我试图将包含JS源文本节点附加到脚本元素,但无济于事。

+0

退房http://stackoverflow.com/questions/2303147/injecting-js-functions-into-the-page-from-a-greasemonkey-script-on-chrome。 – 2010-02-24 07:14:17

回答

1

它吮吸,但要做到这一点,最好的方法可能是通过将其注入DOM来传达你的数据:http://code.google.com/chrome/extensions/content_scripts.html#host-page-communication

您还可能能够通过做这样的事情来实现:

var script = document.createElement('script'); 
script.type = 'text/javascript'; 
script.text = 'alert("It works!");'; 
document.head.appendChild(script); 

我没有测试过这个,但我猜测它会从你的内容脚本中工作。

+0

谢谢,这正是我正在尝试的效果。不知道为什么它不工作,我不知道是否因为我试图使用appendChild而不是只设置.text属性。 – Brad 2010-02-24 13:53:58