Webページ内で実行中のjavascriptの動作を停止するためのJavascriptコードを教えてください。


chromeに自動スクロールするブックマークレットを登録して、webページ閲覧時のスクロールを自動でできるようにしました。
javascript:setInterval(function(s)%7BscrollBy(1,s%7C%7C1)%7D,10)

自動スクロール中にクリックしたい部分が出てきた際にこのスクロール動作を停止したいですが、停止の仕方がわかりません。
ブックマークレットからの実行で停止したいので、停止するためのjavascriptコードを教えてください。

Macbookでトラックパッド利用なので中ボタンクリックのスクロールモードがありません。
javascript実行でスクロールは手放しで自動スクロールするので用途的にもJS実行が便利です。
停止のJSブックマークレットができればやりたいことが完成します。

よろしくお願いします。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2019/05/12 21:13:41
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:shidho No.1

回答回数86ベストアンサー獲得回数15

ポイント100pt

setInterval()の実行は、clearInterval()で止めることが出来ます。
おそらく javascript:clearInterval(); なブックマークレットで止められると思います。
他に、元のブックマークレットを
javascript:var id = setInterval(function(s)%7BscrollBy(1,s%7C%7C1)%7D,10)
としておき、
javascript:clearInterval(id);としておいたほうが確実かもしれません。

(この例では、ブックマークレットを複数回押されたときのこと、元のページでグローバルにidという変数が定義されていたときのことは考慮していません)

id:kimidorikinoko

ありがとうございます。お教えいただいた2つのコードで実行と停止できました。回答が遅くなりましたすみません。

2019/05/12 21:12:12

その他の回答2件)

id:shidho No.1

回答回数86ベストアンサー獲得回数15ここでベストアンサー

ポイント100pt

setInterval()の実行は、clearInterval()で止めることが出来ます。
おそらく javascript:clearInterval(); なブックマークレットで止められると思います。
他に、元のブックマークレットを
javascript:var id = setInterval(function(s)%7BscrollBy(1,s%7C%7C1)%7D,10)
としておき、
javascript:clearInterval(id);としておいたほうが確実かもしれません。

(この例では、ブックマークレットを複数回押されたときのこと、元のページでグローバルにidという変数が定義されていたときのことは考慮していません)

id:kimidorikinoko

ありがとうございます。お教えいただいた2つのコードで実行と停止できました。回答が遅くなりましたすみません。

2019/05/12 21:12:12
id:Lhankor_Mhy No.2

回答回数814ベストアンサー獲得回数232

clearInterval を使ってください。
no title

id:psne No.3

回答回数605ベストアンサー獲得回数334

javascript:window.qDOThatenaDOT1557452747=function(){var b=0;(function(){b=setInterval(function(c){scrollBy(1,c||1)},10)})();window.onclick=function(){clearInterval(b);delete window.qDOThatenaDOT1557452747}};window.qDOThatenaDOT1557452747();

動作確認と元のコードはこちらです。
※横スクロールがあるページでは斜めにスクロールしていますが、元のブックマークレットでも同じ挙動をしていたので、そのまま適用しています。
コードはClosure Compilerにて整形しています。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません