【问题标题】:Running JavaScript on a Page via Chrome Extension通过 Chrome 扩展在页面上运行 JavaScript
【发布时间】:2013-11-07 21:35:30
【问题描述】:

所以我正在编写一个 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?如果有其他人知道的方法,请告诉我!

非常感谢。

【问题讨论】:

  • tampermonkey 更容易用于在线游戏作弊...

标签: javascript html google-chrome google-chrome-extension manifest


【解决方案1】:

使用该 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 文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-31
    • 2018-08-29
    相关资源
    最近更新 更多