0

だから私は(うまくいけば)Cookie Clickerを改善するChrome拡張機能を書いています。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 に答える