0

ボタンがクリックされるまで5秒ごとにページをスクロールダウンする非常に小さなChrome拡張機能を作成します。

私の問題は、ボタンがクリックされたときにイベントを取得できることです。

popup.js

$("#stop").click(function() {
    alert(1);
});

$("#start").click(function() {
  setInterval(function(){ 
    $("html, body").animate({ scrollTop: $(document).height() }, 1000);
  }, 5000);
});

/*
$(window).load(function() {
  setInterval(function(){ 
    $("html, body").animate({ scrollTop: $(document).height() }, 1000);
  }, 5000);
});
*/

html

<!doctype html>
<html>
  <head>
    <title>Getting Started Extension's Popup</title>
    <style>
      body {
        min-width: 357px;
        overflow-x: hidden;
      }
      input {
        float: right;
      }
    </style>
    <script src="jquery-latest.js"></script>
    <script src="popup.js"></script>
  </head>
  <body>

    Classname <input type="text" name="classname" id="classname"><br>
    Interval: <input type="text" name="interval"><br>

    <button type="button" id="start">Scroll Down</button>
    <button type="button" id="stop" onclick="test()">Stop</button>
  </body>
</html>

マニフェスト

{
  "manifest_version": 2,

  "name": "One-click Kittens",
  "description": "This extension demonstrates a 'browser action' with kittens.",
  "version": "1.0",

  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "permissions": ["tabs", "http://*/*", "background"],
  "content_scripts": [ {
    "matches": ["http://*/*"],
    "js": [ "jquery-latest.js","popup.js" ],
    "matches": [ "http://*/*", "https://*/*"],
    "run_at": "document_end"
  }]
}
4

1 に答える 1

0

$(window).load()コードを関数内に保持する必要があります。そうしないと、まだ作成されていない要素にイベント リスナーをアタッチしようとしていて、うまくいきません。

とにかく、これでうまくいくはずです:

$(window).load(function() {
    $("#stop").click(function() {
        alert(1);
    });

    $("#start").click(function() {
      setInterval(function(){ 
        $("html, body").animate({ scrollTop: $(document).height() }, 1000);
      }, 5000);
    });
});

そして、これがおまけです。$(window).load(function() {...})長くてぎこちない を書く代わりに$(function() {...});、同じ効果で書くことができます。

于 2013-02-11T22:58:48.930 に答える