2013-11-22 66 views
0

我试图将图像插入Amazon.comchrome.tabs.executeScript:当我试图将图像插入特定网站

首先不行的,我验证了镀铬控制台下面的代码工作正常

insertPlace = document.getElementById("rightCol") 
myImage = document.createElement("image") 
myImage.src = "http://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Rotating_earth_%28large%29.gif/200px-Rotating_earth_%28large%29.gif" 
myImage.onclick = function() {alert(insertImage.value)} 
alert("insertImage running") 
insertPlace.insertBefore(myImage) 

然而,当我组装此代码到Chrome扩展格式,它似乎没有工作了。我添加“选项卡”,“的manifest.json”,“activeTab”权限和下面的代码是background.js

function insertImage() { 
insertPlace = document.getElementById("rightCol") 
myImage = document.createElement("image") 
myImage.src = "http://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Rotating_earth_%28large%29.gif/200px-Rotating_earth_%28large%29.gif" 
myImage.onclick = function() {alert(insertImage.value)} 
alert("insertImage running") 
insertPlace.insertBefore(myImage)} 
function execute() { 
chrome.tabs.executeScript(null, 
        insertImage()); 
} 
chrome.tabs.onCreated.addListener(function(tabId, changeInfo, tab) {   
execute(); 
}); 

回答

2

executeScript功能类似于eval功能,在它接受一个代码串它执行。您正在尝试传递insertImage函数的结果(为空)。对于脚本工作,必须注入所有相关的JS代码作为字符串:

function execute() { 
    var script = insertImage.toString() + 'insertImage();'; 
    chrome.tabs.executeScript(null, { code: script }); 
} 
+0

我相信它应该更像'chrome.tabs.executeScript(NULL,{代码:脚本});'。 – gkalpak

+0

@ExpertSystem你是对的。更新了答案 – levi

+0

谢谢!我成功地将图像插入到amzon.com。 –