chrome.tabs.executeScript:不;当我试图将图片插入特定网站时,它不起作用

chrome.tabs.executeScript : Doesn't work when I tried to insert an image into specific website

本文关键字:插入 网站 不起作用 executeScript chrome tabs      更新时间:2023-09-26

我试图将图像插入Amazon.com

首先,我验证了以下代码在chrome控制台中运行良好

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中添加了"tab"、"、"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();
});

executeScript函数与eval函数相似,因为它接受执行的代码字符串。您正试图传递insertImage函数(为null)的结果。为了使脚本工作,您必须将所有相关的JS代码作为字符串注入:

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