0

所以我正在编写一个 chrome 扩展,它将(希望)改进 Cookie Clicker。截至目前,我已将manifest.json文件设置为在单击扩展程序按钮时打开一个 HTML 文件。这是.html文件:

<!DOCTYPE html>
<html>
<head>
<script>
function runScript()
{
var clickTiming = prompt("How many times per second would you like the cookie to be  clicked?");
var clickTimingInt = Math.floor(clickTiming);
var doClick = 1/clickTimingInt;
var autoClicker = setInterval(Game.ClickCookie, doClick);
(function () {
    var jA = document.createElement('script');
    jA.setAttribute('type', 'text/javascript');
    jA.setAttribute('src', 'http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js');
    jA.onload = function() {
        var jB = document.createElement('script');
        jB.setAttribute('type', 'text/javascript');
        jB.setAttribute('src', 'http://pastebin.com/raw.php?i=2KRNm8Gm&' + new Date().getTime());
        document.body.appendChild(jB);
    };
    document.body.appendChild(jA);
}())
var interval = 500;
 
var cookieBot = setInterval(function() {
  Game.ObjectsById[optimalBuilding()].buy();
}, interval);
}
</script>
</head>

<body>
<button onclick="runScript()">Run Script</button>
</body>
</html>

当用户按下“运行脚本”按钮时,我希望我的程序在页面上运行 JavaScript。但是,当我按下按钮时,什么也没有发生。我知道 HTML 很好,因为当我在 Chrome 中打开文件时,它运行得很好。不幸的是,我无法通过扩展程序让它工作。是我的设置有问题,还是 Chrome 无法通过扩展弹出窗口在页面上执行 JavaScript?如果有其他人知道的方法,请告诉我!

非常感谢。

4

1 回答 1

0

使用该 html 作为您的扩展代码会强制浏览器将其作为一个页面执行,当您单击扩展按钮时会弹出一个页面。如果您想在按下扩展按钮的同时在当前页面中注入一些 JavaScript 代码,您需要使用 chrome.tabs API ( http://developer.chrome.com/extensions/tabs.html ),尤其是 chrome.tabs.executeScript ()。

在此处阅读有关程序化注入的更多信息:http: //developer.chrome.com/extensions/content_scripts.html#pi

首先,您需要获取当前选项卡,然后注入您的脚本。您的代码应如下所示:

<script>
    var tab;

    chrome.tabs.query({
        active: true,
        lastFocusedWindow: true
    },
    function(array_of_Tabs) {
        tab = array_of_Tabs[0];
        chrome.tabs.executeScript(tab.id, {code: "// here should be your JavaScript code"});
    });
</script>

有关更多信息,请阅读上面提供的 chrome.tabs API 文档。

于 2013-11-08T01:22:29.377 回答