所以我正在编写一个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?如果还有其他方法可以让任何人知道,请告诉我!
非常感谢。
答案 0 :(得分: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文档。