[英]Running JavaScript on a Page via Chrome Extension
所以我正在编写一个 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? 如果有人知道其他方法可以做到这一点,请告诉我!
非常感谢。
使用该 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 文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.