- -pv
スレッドの閲覧状況:
現在、- がスレを見ています。
これまでに合計 - 表示されました。
※PC・スマホの表示回数をカウントしてます。
※24時間表示がないスレのPVはリセットされます。

ブックマークレット

1名無しさん:2013/07/01(月)07:18:52 ID:ukT/HvmBn()
ブックマークレット・Bookmarklet の話題
2名無しさん :2013/07/01(月)07:23:04 ID:ukT/HvmBn()
ブックマークレット/Bookmarkletの作り方 - catch.jp-wiki
http://www.catch.jp/wiki/?Bookmarklet%A4%CE%BA%EE%A4%EA%CA%FD

■hello world 表示
javascript:alert("hello world");

■Wikipediaで検索
javascript:var d=document;
var tx=d.selection?d.selection.createRange().text:d.getSelection();
var subw=window.open('http://ja.wikipedia.org/wiki/'+tx).document;

■タイトルを別ウィンドウを開いて表示
javascript:(
function(){
function o(s){
var d=window.open().document;
d.writeln('<textarea rows=15 cols=80>'+s+'</textarea>');
d.close()
}
var contents=document.title;
o(contents);
}
)();
3名無しさん :2013/07/01(月)07:25:55 ID:ukT/HvmBn()
■現在表示しているページのタイトルとURLを表示
javascript:(function(){function%20o(s){var%20d=window.open().document;
d.writeln('<textarea%20rows=15%20cols=80>'+s+'</textarea>');
d.close()}
o(document.title+"\n"+location.href);})();

この板で実行すると、↓が得られる
プログラム技術@open2ch掲示板
http://toro.open2ch.net/tech/
4名無しさん :2013/07/01(月)08:02:40 ID:ukT/HvmBn()
JavaScriptのオブジェクト window, document, etc
Web API リファレンス | MDN
https://developer.mozilla.org/ja/docs/Web/API

文字列(String)
http://www.tohoho-web.com/js/string.htm
5名無しさん :2013/07/01(月)08:03:47 ID:ukT/HvmBn()
■タイトル、URL、選択範囲を別ウィンドウに表示

javascript:(function(){
function o(s){
var c=document;
var tx=c.selection?c.selection.createRange().text:c.getSelection();
var d=window.open().document;
d.writeln('<textarea rows=15 cols=80>'+s+tx+"\n"+'</textarea>');
d.close()}
o(document.title+"\n"+location.href+"\n");
})();
6名無しさん :2013/07/01(月)08:16:32 ID:ukT/HvmBn()
FirefoxのWebコンソールでJavaScriptのテストが出来る

Web コンソール - Tools | MDN
https://developer.mozilla.org/ja/docs/Tools/Web_Console

一番したにコピペしてエンターキーを押す
var c=document;
var tx=c.selection?c.selection.createRange().text:c.getSelection();
alert(tx);

一行だと、
alert(document.getSelection())
7名無しさん :2013/07/01(月)08:19:46 ID:ukT/HvmBn()
JavaScript用エディタ

Scratchpad - Tools | MDN
https://developer.mozilla.org/ja/docs/Tools/Scratchpad
>スクラッチパッドを Firefox 内部へのアクセスに使用する

Firefoxを改造できるみたいだ
8名無しさん :2013/07/01(月)08:57:43 ID:ukT/HvmBn()
Canvas要素について(英語)
4.8.11 The canvas element _ HTML Standard
http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html

Canvas チュートリアル - HTML | MDN
https://developer.mozilla.org/ja/docs/Web/HTML/Canvas/Tutorial
9名無しさん :2013/07/01(月)09:21:21 ID:ukT/HvmBn()
もはやブックマークレットじゃないので、HTML5スレでやります
JavaScript HTML5
http://toro.open2ch.net/test/read.cgi/tech/1372638049/l50
10名無しさん :2013/07/02(火)08:40:52 ID:ZOpfpd2nf
javascript:document.getElementById("psize").innerHTML = '<option>1</option>';
これで太さが1だけになるかと思ったら、そうならず、
URLが 上のjavascript:~で 1だけ表示されるページになる

わけわからん
11名無しさん :2013/07/02(火)08:54:15 ID:VGQPOapc0
おおー なんだかわからんけど
>>3をアドレス欄で実行してみた
別ページが開いておもしろいやないか!
12名無しさん :2013/07/02(火)08:54:55 ID:ZOpfpd2nf
あ、わかった
javascriptは下に置かないとダメなんだ
『標準DOMスクリプティング』サンプルスクリプト
http://www.futomi.com/books/dom/script/

イイ
<p id="info"></p>
<script type="text/javascript">
document.getElementById('info').appendChild(document.createTextNode('こんにちわ'));
</script>

ダメ
<script type="text/javascript">
document.getElementById('info').appendChild(document.createTextNode('こんにちわ'));
</script>
<p id="info"></p>
13名無しさん :2013/07/02(火)08:59:25 ID:ZOpfpd2nf
とおもったが、ブックマークレットの場合は???
http://img.open2ch.net/p/tech-1372630732-13.png
14名無しさん :2013/07/02(火)09:04:31 ID:ZOpfpd2nf
>>11
Firefox21だとアドレスバーに入れてもダメなんですよ
ブックマークレットなら大丈夫なのに
セキュリティーの関係で禁止されているらしいです
15名無しさん :2013/07/02(火)09:43:52 ID:ZOpfpd2nf
スクラッチパッドから実行したら、ちゃんと1だけになった
document.getElementById("psize").innerHTML = '<option>1</option>';
16名無しさん :2013/07/02(火)12:24:48 ID:ZOpfpd2nf
クロシージャーにしないとおかしくなるみたいだ

■選択範囲をopen2ch.netから検索
javascript:(function(){function o(s){
window.open('http://www.google.com/search?q=site:open2ch.net '+'"'+s+'"').document;}
var d=document;
var s=d.selection?d.selection.createRange().text:d.getSelection();
o(s);})();
17名無しさん :2013/07/02(火)12:39:57 ID:ZOpfpd2nf
ここにあるサンプルはうまくいったけど、ローカルファイルはダメなのかな?

SDP - エスデーペー ≫ 外部からjsファイルを読み込むbookmarklet
http://sdp.katteyomi.info/?p=33

javascript:function loadScript(scriptURL) {
var scriptElem = document.createElement('SCRIPT');
scriptElem.setAttribute('language', 'JavaScript');
scriptElem.setAttribute('src', scriptURL);
document.body.appendChild(scriptElem);
}loadScript('http://sdp.katteyomi.info/test_page/bookmarklet_test.js');
18名無しさん :2013/07/02(火)12:49:15 ID:ZOpfpd2nf
あ、ローカルディスクにあるファイルを勝手に読まれたらセキュリティー上問題か
19名無しさん :2013/07/02(火)12:50:34 ID:ZOpfpd2nf
んー、でも読み込むのはブラウザだから問題ないかな? とも思う
20名無しさん :2013/07/02(火)13:00:31 ID:ZOpfpd2nf
どこが間違えているのかわからん

OK スクラッチパッドで
document.getElementById("psize").innerHTML='<option>1</option>';

NG ページが開かれる
javascript:document.getElementById("psize").innerHTML='<option>1</option>';

NG なにも起きない
javascript:(function(){function o(d){
d.getElementById("psize").innerHTML = '<option>1</option>';
o(document);})();

NG なにも起きない
javascript:(function(){function o(d){
d.getElementById("psize").innerHTML = '<option>1</option>';
var d=document;
o(d);})();
21名無しさん :2013/07/19(金)08:19:48 ID:sUaB8V8KY
便利なはずだ

■選択範囲をURLのホストから検索
javascript:(function(){function o(s){
window.open('http://www.google.com/search?q=site:'+location.hostname+' "'+s+'"').document;}
var d=document;
var s=d.selection?d.selection.createRange().text:d.getSelection();
o(s);})();
22名無しさん :2013/07/25(木)13:54:41 ID:f6FmV+Tko
スレッド一覧を一列表示

javascript:(function(){
var d=document;
var a=d.getElementsByTagName('a');
for(i=0;i<a.length;i++) a[i].appendChild(d.createElement('br'));
}());

ニュース速報+@open2ch掲示板(@スレッド一覧
http://uni.open2ch.net/newsplus/subback.html
23名無しさん :2013/07/25(木)14:41:26 ID:f6FmV+Tko
ttp://toro.open2ch.net/test/read.cgi/tech/1372630732/
1372630732の部分でソート

■スレ一覧をソートして一列表示
javascript:(function(){
var d=document;
var n=d.getElementsByTagName('a');
var p=n[0].parentNode;
var a=new Array();
for(var i=n.length-1;i>=0;i--){
a.push(n[i]);
p.removeChild(n[i])
}
function f(s){
var r=s.lastIndexOf('/');
var l=s.lastIndexOf('/', r-1);
return s.substring(l+1, r);
}
a.sort(function(a,b){return f(b.href)-f(a.href);});
for(var i=0;i<a.length;i++){
p.appendChild(a[i]);
var br=d.createElement('br');
a[i].appendChild(br);
}
}());
24名無しさん :2013/07/25(木)16:13:50 ID:f6FmV+Tko
hrefを直接比較してもできた。 >23より短い。

javascript:(function(){
var d=document;
var n=d.getElementsByTagName('a');
var p=n[0].parentNode;
var a=new Array();
for(var i=n.length-1;i>=0;i--){
a.push(n[i]);
p.removeChild(n[i])
}
a.sort(function(a,b){return a.href<b.href;});
for(var i=0;i<a.length;i++){
p.appendChild(a[i]);
var br=d.createElement('br');
a[i].appendChild(br);
}
}());
25名無しさん :2013/07/26(金)09:36:01 ID:4hgMtm0YK
ソート結果は同じだけど、こうやったほうがいいかも
a.sort(function(a,b){return a.href<b.href?1:-1;});
26桃白白 :2013/08/11(日)20:10:51 ID:unkIWkJX5
■2chで画像を表示する。
https://friendpaste.com/5TnP6FETGI6coNONFnLQaG
27名無しさん :2013/08/24(土)16:07:24 ID:0rGR1f/zD
■スレ一覧をソートして一列表示(日時付き)
2013年08月10日(土) 21:20:37 9: 設計と抽象 (38)
2013年07月01日(月) 09:20:49 15: JavaScript HTML5 (79)

javascript:(function(){
var d=document;
var n=d.getElementsByTagName('a');
var p=n[0].parentNode;
var a=new Array();
for(var i=n.length-1;i>=0;i--){
a.push(n[i]);
p.removeChild(n[i])
}
a.sort(function(a,b){return a.href<b.href?1:-1;});
function f(s){
var r=s.lastIndexOf('/');
var l=s.lastIndexOf('/', r-1);
var D='日月火水木金土';
var d=new Date(s.substring(l+1, r)*1000);
function b(s){return ('0'+s).slice(-2);}
return d.getFullYear()+'年'+b(d.getMonth()+1)+'月'+b(d.getDate())+'日'+
'('+D[d.getDay()]+') '+b(d.getHours())+':'+b(d.getMinutes())+':'+b(d.getSeconds());
}
for(var i=0;i<a.length;i++){
p.appendChild(d.createTextNode(f(a[i].href)+' '));
p.appendChild(a[i]);
p.appendChild(d.createElement('br'));
}
}());
28名無しさん :2013/09/11(水)22:45:55 ID:9b3zf81Gi
■選択範囲の行数を取得
javascript:(function(){
var d=document;
var s=d.selection?d.selection.createRange().text:d.getSelection();
var t=s.toString();
var n=t.length?t.split('\n').length:0;
document.title = n;
})();
29名無しさん :2013/10/16(水)18:02:10 ID:vkgNDy3mJ
■スレ一覧からカキコ数を数える
1256
http://toro.open2ch.net/tech/subback.html

javascript:(function(){
var d=document;
var n=d.getElementsByTagName('a');
function f(s){
var l=s.lastIndexOf('(');
var r=s.lastIndexOf(')');
return parseInt(s.substring(l+1, r), 10);
}
var a=0;
for(var i=0;i<n.length-1;i++){
a+=f(n[i].textContent);
}
d.title = a;
}());
30名無しさん :2013/10/18(金)11:24:12 ID:yGAVbKYAZ
■スレ一覧からカキコ数を数える(日付、板ID付き)
2013年10月17日 11:22:59 tech 1257

javascript:(function(){
var d=document;
var n=d.getElementsByTagName('a');
function f(s){
var r=s.lastIndexOf(')');
var l=s.lastIndexOf('(')+1;
return parseInt(s.substring(l, r), 10);
}
var a=0;
for(var i=0;i<n.length-1;i++){
a+=f(n[i].textContent);
}
r=d.URL.lastIndexOf('/');
l=d.URL.lastIndexOf('/',r-1)+1;
d.title=(new Date()).toLocaleString()+' '+d.URL.substring(l, r)+' '+a;
}());
31名無しさん :2014/03/14(金)14:03:57 ID:XXvV7IArm
あげ
32名無しさん :2014/04/27(日)20:45:01 ID:l1X9QoSIj
http://open2ch.net/dev/toukei.cgi

統計データをopen2chの書き込み欄にコピペするブックマークレットを作ろうと思ったけど、
ドメインが違うと無理なんだな

function getUri(uri) {
 let x = new XMLHttpRequest();
 x.open("GET", uri, false);
 x.send(null);
 return x.responseText;
}

function addMessage(text) {
 let MESSAGE = document.getElementById("MESSAGE");
 if (MESSAGE.value) MESSAGE.value += "\n";
 MESSAGE.value += text;
}

if (location.host.match(/(^|\.)open2ch\.net$/)) {
 let uri = location.origin + "/dev/toukei.cgi";
 let toukei = getUri(uri);
}
33おーぷん@名無しさん :2014/04/29(火)20:50:55 ID:nqLApvSrR
アップ
34名無しさん@おーぷん :2014/05/27(火)19:46:25 ID:6cDavbHiv
リンク先のフォーム入力する方法有りませんか

例えばhttp://xxx.htmlのソースが
<html>
<head>
</head>
<body>
<input type="text" id="test">
</body>
</html>

このリンクに有るtextに入力するブックマークレット作りたいのですがどうしたらいいですか

一応
javascript:
a=window.open('http://xxx.html');
a.document.GetElementById("test").value = "test";
でやってもリンク先には飛ぶのですがフォームに表示されません
35名無しさん@おーぷん :2014/05/28(水)08:31:33 ID:mReqQ4cmq
ブックマークレットのスレでやれって言われたので
komeのサムネイルでっかくしてみた

javascript:(function(){view();var _sC=showComment;function view(){var elements = document.getElementsByTagName( 'img' );for ( var i = 0, il = elements.length; i < il; i++ ) {var element = elements[i];if ( /\bkkorabo\b/.test( element.className ) ) {element.height=100;}}}showComment=function(c,u){_sC(c,u);}})();0
36名無しさん@おーぷん :2014/05/28(水)09:00:30 ID:HMGKVSpCn
これ _sC、showComment、最後の0は意味ないでしょ
37名無しさん@おーぷん :2014/05/28(水)09:15:26 ID:mReqQ4cmq
たぶん無いです
昨日からブックマークレット触りだしたんでhtml5のスレと見比べながらやっててそのスレで0付けてたんで意味あるのかと思ってw
38名無しさん@おーぷん :2014/05/28(水)09:26:48 ID:HMGKVSpCn
じゃあ削ったほうがいいな。
showCommentはグローバルを汚染してるし、最後に0があると多くのブラウザで画面の内容が消えるから。
39名無しさん@おーぷん :2014/05/28(水)10:23:41 ID:mReqQ4cmq
0は削ってもいいんだけどshowCommentは無いと表示されてる画像は拡大されるんですけど、新しく来た画像が拡大しないんで取り敢えずこのままって感じで
それにshowComment消して色々やってみたんだけどコメントが流れなかったり動作が安定しないんで魔法の一言が分かるまではコレでいいかなとw
40名無しさん@おーぷん :2014/05/28(水)12:50:08 ID:HMGKVSpCn
var _sC = showComment;
showComment = function (c, u) {
_sC(c, u);
};
これって意味のあることしてる様には見えないんだけど合ってるの?
view();を差し込まなくていいの?
41名無しさん@おーぷん :2014/05/28(水)15:16:07 ID:mReqQ4cmq
>>40
それ無いとkomeが表示されてからviewが実行されないんです
自分もあんまり詳しくないんでパクったスレ元だけ貼っておきます

http://toro.open2ch.net/test/read.cgi/tech/1372638049/152
42名無しさん@おーぷん :2014/05/28(水)16:57:52 ID:mReqQ4cmq
>>40
すいません
勘違いしてました
view差し込んでたと思ったんですけどコピペがうまくいってませんでした

一応view差し込んだ版
javascript:
(function(){
view();
var _sC=showComment;
function view(){var elements = document.getElementsByTagName( 'img' );
for ( var i = 0, il = elements.length; i < il; i++ ) {
var element = elements[i];
if ( /\bkkorabo\b/.test( element.className ) ){
element.height=100;}}}showComment=function(c,u){
view();
_sC(c,u);
}
}
)();

これでもコメントが流れないと拡大されないです
表示されてすぐに拡大出来る方法は分かりません
43名無しさん@おーぷん :2014/05/28(水)20:54:21 ID:3ORzdIuou
今更だが、こういうのはStyleSheetをいじった方がいろいろ都合がいい。

javascript:(function(){
var style,text;
style=document.createElement('style');
text='img.kkorabo{'
+'width:auto;'
+'height:100px;'
+'}';
style.appendChild(document.createTextNode(text));
document.getElementsByTagName('head')[0].appendChild(style);
})();
44名無しさん@おーぷん :2014/05/28(水)22:07:48 ID:mReqQ4cmq
確かにそっちのほうがいいですね
以前スタイルシートの書き換え別の場所で聞いてjsでやるべきじゃないって言われて
それ以来このやり方でやってたのでやり方わすれてましたw

アドバイスありがとうございます
45名無しさん@おーぷん :2014/05/29(木)23:13:27 ID:JeqFBp8AZ
firefoxの場合最後の0を消せばよかったのか
46名無しさん@おーぷん :2014/06/02(月)08:49:30 ID:GlZKP4U6y
>>36-40
意味のないものはないでしょ
_sCは複数のブックマークレットが競合しないようにするため
末尾0は関数がもし何か値を返しても遷移しないようにするためのおまじない
ただしFirefoxではアレだから0をundefinedとかに変えたほうがいいかもしれない
47名無しさん@おーぷん :2014/06/02(月)19:14:55 ID:5U4C9Vszx
>>http://toro.open2ch.net/test/read.cgi/tech/1372638049/223
オープンのリンク表示されるようにしてみた
「#tech/1372630732/」みたいな感じで貼り付ければ表示されるはず

コード長すぎて貼れないのでこっち
http://bookmarkify.it/2243
48名無しさん@おーぷん :2014/06/03(火)21:25:57 ID:oNeSvR5Wt
>>46
お前は何もわかってない。
最初に貼られたコードには間違いがあったため、 >>40は変数を変えただけの無意味なコードだった。
>>42を読め。
また、末尾の0の前までの文を評価した値がundefinedになるため、末尾の0は全くもって不要。
むしろ、0があることで多くのブラウザ(おそらく例外はChromeなどのWebkit系のみ)でdocumentが書き換えられるため、付けてはいけない。
49名無しさん@おーぷん :2014/06/03(火)22:42:59 ID:oNeSvR5Wt
>>47
ReferenceError: Undefined variable: _insertLog

あとevalは使うな
50名無しさん@おーぷん :2014/06/04(水)10:45:45 ID:vQYUx4KU8
>>49
正規表現間違ってたのはわかったけどそんなエラー出ますか
51名無しさん@おーぷん :2014/06/04(水)19:09:25 ID:AyfbNwXPU
>>50
4行目で出る
52名無しさん@おーぷん :2014/06/04(水)19:11:51 ID:AyfbNwXPU
>>50 >>51
悪い
こっちのブラウザの問題だった
53名無しさん@おーぷん :2014/06/10(火)17:20:34 ID:HiqyI9MrV
>>48
なにも分かってないのはあんた
そのコードにはモトネタがあってそれにおいて書かれた意図を説明している
54名無しさん@おーぷん :2014/06/12(木)05:33:25 ID:yVaEaUcOb
スレタイ検索で、複数板の指定と、複数板の除外をブックマークレットで作れるだろうか
あらかじめ板idをソースに書き込んでおくとしましょう

全板でテストの検索
http://open2ch.net/headline.cgi?q=%E3%83%86%E3%82%B9%E3%83%88

news4vipでテストの検索
http://open2ch.net/headline.cgi?bbs=news4vip&q=%E3%83%86%E3%82%B9%E3%83%88

重たいけど、5000件検索も可能だ
http://open2ch.net/headline.cgi?bbs=news4vip&q=1&n=5000
55名無しさん@おーぷん :2014/06/12(木)05:43:15 ID:yVaEaUcOb
サーバに係わらず、検索可能なようです

function readURI(uri) {
 var x = new XMLHttpRequest();
 x.open("GET", uri, false);
 x.send(null);
 return x.responseText;
}

var search = readURI("http://toro.open2ch.net/headline.cgi?bbs=news4vip&q=1&n=1000");
addText(search);
56名無しさん@おーぷん :2014/06/12(木)05:50:07 ID:yVaEaUcOb
ニュー速+表示中でも、vipの検索が可能

ニュース速報+@おーぷん2ちゃんねる
http://uni.open2ch.net/newsplus/

ニュー速VIP@おーぷん2ちゃんねる
http://hayabusa.open2ch.net/news4vip/

var keyword = "テスト";
var result = readURI(location.origin + "/headline.cgi?bbs=news4vip&n=100&q=" + encodeURI(keyword));
57名無しさん@おーぷん :2014/06/12(木)21:35:08 ID:OKIgejdkq
>>53
何の説明にもなってないな。
モトネタの説明を根拠としたいなら、どこがその説明なのかちゃんと示せ。
58名無しさん@おーぷん :2014/06/23(月)21:22:00 ID:gmMImXstL
多分モトネタはJSスレのやつだと思う。
その作者がkomeで遷移の件は言ってた。
59名無しさん@おーぷん :2014/10/28(火)00:05:03 ID:ubARbZAPF
>>42
javascript:
(function(){
view();
var _sC=showComment;
function view(){var elements = document.getElementsByTagName( 'img' );
for ( var i = 0, il = elements.length; i < il; i++ ) {
var element = elements[i];
if ( /\bkkorabo\b/.test( element.className ) ){
element.height=100;}}}showComment=function(c,u){
_sC(c,u);
view();
}
}
)();

プログラムとかjavascriptの関数?とかわからないのですが、
komeのブックマークレットキッカケで拡張機能もっとないかなと
検索していて通りかかりました。
ひょっとしたら_sC(c,u)ってなんか値いれてるのかなっておもって
viewって言うやつを後にもっていったら拡大されました。
自分の環境だけだったらすいません。ちなみにクローム使ってます。
便利な機能をつくってくれてありがとうございます。
これと色分け+アンカ対応とかと一緒にしてくれたらうれしいなと思います。
60名無しさん@おーぷん :2014/10/28(火)00:48:58 ID:ubARbZAPF
よく読んだらスタイルシートって言うやつで解決してたんですね
すいませんでした。

kome拡張 まとめられました。

javascript:(function(){var style,text;style=document.createElement('style');text='img.kkorabo{'+'width:auto;'+'height:100px;'+'}';style.appendChild(document.createTextNode(text));document.getElementsByTagName('head')[0].appendChild(style);window._xX='';if(!window._L)window._L=eval(('('+_insertLog).replace(/\>X\</,'>"+_xX+"<')+')');var _sC=showComment,h=$._data($('#komeform')[0]).events.submit[0],R=function(s){return s.replace(/\>\>(\w{4})/g,function(_,w){for(var i=0;i<v.length;i++){if(v[i].slice(3,7)==w)return '>>'+(i+1)};return '>>You' })},r=function(){return Math.random()*256|0},b={},v=[];_insertLog=function(k,d){k=R(k);var x,y,z,c=b[d],o=v.indexOf(d)+1;do{x=r(),y=r(),z=r()}while(x+y+z<255*1.5)if(!c)c=b[d]='rgb('+x+','+y+','+z+')';if(!o)o=v.push(d);_xX=o+':';_L.apply(0,arguments);if(!isImgur(k))$($('#klog_view div')[0]).css({'color':c})};showComment=function(c){c=R(c);var ih=window.innerHeight;window.innerHeight=ih>600?ih-500:100;_sC.apply(0,arguments);window.innerHeight=ih};;if(!window._sH)window._sH=h.handler;h.handler=function(e){var s=$('#kome');s.val(s.val().replace(/\>\>(\d+)/g,function(_,w){return '>>'+(v[w-1]?v[w-1].slice(3,7):'???')}));_sH(e)};$('#klog_view').css('opacity',1);$('#komediv,#klog_view').css('width','500px');$('#komediv div[align]').prop('align','center');$($('#komeform input')[0]).css('width','450px');updateLog()})();0
61名無しさん@おーぷん :2014/11/01(土)16:13:29 ID:FQ6EEvw60
インデントをHTML用にエスケープするブックマークレット

javascript:open().document.write('<!DOCTYPE html><title>escape indent</title><textarea id=input placeholder=input></textarea><div><span>indent type: <select id=indentType><option value="">tab<option value="">space</select></span><span>count: <select id=indentCount><option value=1>1<option value=2>2<option value=4>4<option value=8>8</select></span></div><textarea id=output placeholder=output></textarea><script>input.onchange=indentType.onchange=indentCount.onchange=function(){var a=input.value,b=Array(+indentCount.value+1).join(indentType.value),a=a.replace(/&/g,"&");output.value=a.replace(new RegExp("^(?:"+b+")+","gm"),function(a){return Array(a.length/b.length+1).join("    ")})};</script>');
62名無しさん@おーぷん :2014/11/01(土)16:15:02 ID:FQ6EEvw60
強制sageか
63名無しさん@おーぷん :2014/11/01(土)16:17:15 ID:FQ6EEvw60
エスケープ忘れてた

javascript:open().document.write('<!DOCTYPE html><title>escape indent</title><textarea id=input placeholder=input></textarea><div><span>indent type: <select id=indentType><option value="">tab<option value="">space</select></span><span>count: <select id=indentCount><option value=1>1<option value=2>2<option value=4>4<option value=8>8</select></span></div><textarea id=output placeholder=output></textarea><script>input.onchange=indentType.onchange=indentCount.onchange=function(){var a=input.value,b=Array(+indentCount.value+1).join(indentType.value),a=a.replace(/&/g,"&amp;");output.value=a.replace(new RegExp("^(?:"+b+")+","gm"),function(a){return Array(a.length/b.length+1).join("&nbsp;&nbsp;&nbsp;&nbsp;")})};</script>');
64名無しさん@おーぷん :2014/11/01(土)16:19:22 ID:FQ6EEvw60
またエスケープ漏れ

javascript:open().document.write('<!DOCTYPE html><title>escape indent</title><textarea id=input placeholder=input></textarea><div><span>indent type: <select id=indentType><option value="&#x9;">tab<option value="&#x20;">space</select></span><span>count: <select id=indentCount><option value=1>1<option value=2>2<option value=4>4<option value=8>8</select></span></div><textarea id=output placeholder=output></textarea><script>input.onchange=indentType.onchange=indentCount.onchange=function(){var a=input.value,b=Array(+indentCount.value+1).join(indentType.value),a=a.replace(/&/g,"&amp;");output.value=a.replace(new RegExp("^(?:"+b+")+","gm"),function(a){return Array(a.length/b.length+1).join("&nbsp;&nbsp;&nbsp;&nbsp;")})};</script>');
65名無しさん@おーぷん :2014/11/03(月)16:25:18 ID:bCpEP7UXi
>34
自分も知りたい
66名無しさん@おーぷん :2014/11/04(火)20:58:53 ID:Uejk4i672
>>65
同一ドメインなら普通に参照できる
別ドメインならセキュリティ上無理
67名無しさん@おーぷん :2014/11/08(土)01:41:59 ID:WAYfYPN5h
>>34
window.openしなけりゃ良いのかと。。
68名無しさん@おーぷん :2014/11/09(日)05:50:25 ID:XMZmIOG0f
>>67
open()は関係ないだろ
69名無しさん@おーぷん :2014/11/10(月)19:55:11 ID:VdXcdYjgf
>>68
初心者かな?
70名無しさん@おーぷん :2014/11/10(月)20:38:20 ID:N01lPlfgV
>>69
上級者さん詳しい説明オナシャス
71名無しさん@おーぷん :2014/11/11(火)05:54:50 ID:HEnAocPu9
>>69
何が言いたいのか意味不明
72名無しさん@おーぷん :2014/12/20(土)05:40:02 ID:lxR
オセロのブックマークレット
http://hayabusa.open2ch.net/test/read.cgi/news4vip/1416938006/308
73名無しさん@おーぷん :2015/01/27(火)00:41:54 ID:dgE
age
74名無しさん@おーぷん :2015/02/05(木)18:29:13 ID:oCw
スレが上がるようになってる?
開いてるスレを履歴から削除するブックマークレット

javascript:$("#history_add").after("<div style='font-size:9pt;padding:5px' class=history_res></div>");$(".history_res").hide().html
("<img src=http://image.open2ch.net/image/loading.gif>履歴を更新中").slideDown("fast");(function(){var obj={mode:"delete"};obj["chk:"+bbs+":"+key]=1;
$.ajax({type:"POST",url:"/test/history.cgi",data:obj,cache:!1,success:function(a){a="error"!==a?"履歴から削除したよ!(゚∀゚)ノ <a href=http://open2ch.net/test/history.cgi>履歴を表示</a>":"エラー。なんかおかしいみたい。。(;∀;)";
$(".history_res").html("<font color=red>"+a+"</font>");setTimeout(function(){$(".history_res").slideUp("fast",function(){$(".history_res").remove()});
$("#history_add").css({color:"blue","text-decoration":"underline",cursor:"hand"})},5E3)}});})();
75名無しさん@おーぷん :2015/02/05(木)22:23:00 ID:oCw
このスレが上がったというより、上のスレが落ちたのか。
あぼーんするブックマークレット

javascript:(function(){function f(a,c){[].forEach.call(a.querySelectorAll('[href$="?id='+c+'"]'),function(b){b=b.parentNode;var a=b.parentNode;b.previousElementSibling&&a.removeChild(b.previousElementSibling);
a.removeChild(b.nextElementSibling);
a.removeChild(b)})}function d(a,c){c.forEach(function(b){f(a,b)})}var e=prompt("あぼーんID(複数可)");
if(e){var c=e.match(/[a-z\d]+/gi);c&&($.prototype.append=function(){return this.domManip(arguments,!0,function(a){
1===this.nodeType&&(1!==
a.nodeType&&11!==a.nodeType||d(a,c),this.appendChild(a))})},d(document,c))}})();
76名無しさん@おーぷん :2015/02/05(木)22:39:25 ID:oCw
さっそくバグを見つけた
自動更新のHTML構造が最初から表示されてるのと違うから面倒くさい

javascript:(function(){function f(a,c){[].forEach.call(a.querySelectorAll('[href$="?id='+c+'"]'),function(b){b=b.parentNode;var a=b.parentNode;b.previousElementSibling
&&"BR"===b.previousElementSibling.tagName&&a.removeChild(b.previousElementSibling);a.removeChild(b.nextElementSibling);a.removeChild(b)})}function d(a,c){c.forEach(function(b){f(a,b)})}var e=prompt("あぼーんID(複数可)");
if(e){var c=e.match(/[a-z\d]+/gi);
c&&($.prototype.append=function(){return this.domManip(arguments,
!0,function(a){
1===this.nodeType&&(1!==a.nodeType
&&11!==a.nodeType||d(a,c),
this.appendChild(a))})},d(document,c))}})();
77名無しさん@おーぷん :2015/03/03(火)10:56:59 ID:pLC
この板表示中に統計ページを取得できないんですけど

function readURI(uri) {
var x = new XMLHttpRequest();
x.open("GET", uri, false);
x.send(null);
return x.responseText;
}

var server = document.location.host;
server = (server == 'open2ch.net') ? '' : server.match(/^[^.]*\./)[0];
var uri = "http://"+server+"open2ch.net/dev/toukei.cgi";
//console.log(uri);

var e = document.getElementById('MESSAGE');
e.value = readURI(uri);
78名無しさん@おーぷん :2015/03/03(火)13:29:24 ID:lXq
>>77
別ドメインにリダイレクトされてクロスオリジンになってるみたいだな
79名無しさん@おーぷん :2015/03/04(水)08:14:43 ID:FVv
日付も指定すればリダイレクトされてない気がする

http://toro.open2ch.net/dev/toukei.cgi?d=2015-03-04
80名無しさん@おーぷん :2015/03/04(水)08:26:05 ID:FVv
できた

function readURI(uri) {
 var x = new XMLHttpRequest();
 x.open("GET", uri, false);
 x.send(null);
 return x.responseText;
}

var server = document.location.host;
server = (server == 'open2ch.net') ? '' : server.match(/^[^.]*\./)[0];
var uri = "http://" + server + "open2ch.net/dev/toukei.cgi?d=" + (new Date()).toLocaleFormat("%x").replace("/", "-", "g");
var e = document.getElementById('MESSAGE');
e.value = readURI(uri);
81名無しさん@おーぷん :2015/03/04(水)08:28:27 ID:FVv
toLocaleFormat() って Firefox でしかサポートされていっぽい

Date.prototype.toLocaleFormat() - JavaScript | MDN
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleFormat

strftime
http://pubs.opengroup.org/onlinepubs/007908799/xsh/strftime.html
82名無しさん@おーぷん :2015/03/04(水)08:53:48 ID:FVv
JQueryが使えるから、それ使ったほうがいいのかな
83名無しさん@おーぷん :2015/03/04(水)09:10:01 ID:FVv
また間違えた getMonth() に 1 を足さないとダメだ

function b(s) {return ('0'+s).slice(-2);}
function dateStr(d) { return d.getFullYear() + '-' + b(d.getMonth()+1) + '-' + b(d.getDay()); }

var server = document.location.host;
server = (server == 'open2ch.net') ? '' : server.match(/^[^.]*\./)[0];
var uri = "http://" + server + "open2ch.net/dev/toukei.cgi?d=" + dateStr(new Date());

$.get(uri, function(data) {
 //var time = html.match(/ランキング更新日時:/)[0];
 var toukou = data.match(/投稿数:[^件]*/)[0];
 //addText(data)
 var e = document.getElementById('MESSAGE');
 e.value = toukou;
});
84名無しさん@おーぷん :2015/03/04(水)09:30:45 ID:FVv
getDay じゃなくて、 getDate だった

function dateStr(d) { return d.getFullYear() + '-' + b(d.getMonth()+1) + '-' + b(d.getDate()); }
85名無しさん@おーぷん :2015/03/16(月)17:53:04 ID:QxL
複数板のヘッドライン
ヘッドラインのページを表示中に実行する
板はbbsで指定

ブックマークレットから実行すると、
SyntaxError: missing ; before statement が出るんですけど、
何とかなりませんか?

おーぷん2ちゃんねるヘッドライン
http://open2ch.net/headline.cgi

javascript:(function(){
var bbs='newsplus,news4plus'.split(',');
function asyncReadDoc(uri,onload) {
var x = new XMLHttpRequest();
if(onload)x.onload=function(){onload(x.responseXML);}
x.onerror=function(){console.error('XMLHttpRequest error: '+uri);}
x.open('GET',uri,true);
x.responseType='document';
x.send(null);
}
var index=0;
var docs=[];
function read(){
 if(bbs[index]){
  var uri = 'http://open2ch.net/headline.cgi?o=updated&n=50&bbs=' + bbs[index];
  asyncReadDoc(uri,function(doc){
   docs.push(doc);
   index++;
   read();
  });
 }else{
  var a=[];
  docs.forEach(function(d) {
   var table=d.getElementsByTagName('table')[1];
   var tr=table.getElementsByTagName('tr');
   for (var i=0;i<tr.length;i++) {
    a.push(tr[i]);
   }
  });
  function getTime(e){return new Date(20+e.children[0].textContent);}
  a.sort(function(m,n){return getTime(n)-getTime(m);});
  var text=[];
  a.forEach(function(e){text.push(e.outerHTML);});
  var table=document.getElementsByTagName("table")[1];
  table.innerHTML=text.join("");
 }
}
read();
})();
86名無しさん@おーぷん :2015/03/16(月)21:05:21 ID:hdJ
>>85
関数代入の文の;が抜けてるな

javascript:(function () {
var bbs = 'newsplus,news4plus'.split(',');
function asyncReadDoc(uri, onload) {
var x = new XMLHttpRequest();
if (onload) x.onload = function () {
onload(x.responseXML);
};
x.onerror = function () {
console.error('XMLHttpRequest error: ' + uri);
};
x.open('GET', uri, true);
x.responseType = 'document';
x.send(null);
}
var index = 0;
var docs = [];
function read() {
if (bbs[index]) {
var uri = 'http://open2ch.net/headline.cgi?o=updated&n=50&bbs=' + bbs[index];
asyncReadDoc(uri, function (doc) {
docs.push(doc);
index++;
read();
});
} else {
var a = [];
docs.forEach(function (d) {
var table = d.getElementsByTagName('table')[1];
var tr = table.getElementsByTagName('tr');
for (var i = 0; i < tr.length; i++) a.push(tr[i]);
});
function getTime(e) {
return new Date(20 + e.children[0].textContent);
}
a.sort(function (m, n) {
return getTime(n) - getTime(m);
});
var text = [];
a.forEach(function (e) {
text.push(e.outerHTML);
});
var table = document.getElementsByTagName('table')[1];
table.innerHTML = text.join('');
}
}
read();
}());
87名無しさん@おーぷん :2015/03/16(月)21:12:15 ID:QxL
あ、そこいるんだ
この二行の最後の;ですね
ちゃんと動きました
if(onload)x.onload=function(){onload(x.responseXML);};
x.onerror=function(){console.error('XMLHttpRequest error: '+uri);};

if (a) x = y;
うむ、必要だ
88名無しさん@おーぷん :2015/03/20(金)21:48:25 ID:OEr
ttp:// も http:// に直し、imgur以外もサムネイル表示するブックマークレット
スレ表示後に実行して、マウスカーソルをURLの上に動かせばおk

JavaScript:(function(){
var open2chImgWaiting = 0;
function extractImgURLs(text) {
var a = [];
text.replace(/[\w\:\/\.\-]*\.(gif|jpg|jpeg|png)(\W|$)/igm, function(s) {
s = s.replace(/\W$/, "");
a.push(s);
});
return a;
};
function open2chOnMouseMove(event) {
var e = event.target;
if (e.tagName == "DD") {
if (e.getAttribute("done")) return;
e.setAttribute("done",1);
var s = e.innerHTML;
s = s.replace("<br>","\n","igm");
s = s.replace(/\<[^<>]*\>/igm,"");
var urls = extractImgURLs(s);
for (var i = 0; i < urls.length; i++) {
var url = urls[i].trim();
if (url.match(/^http.*/i)) continue;
url = "http://"+url.replace(/^.*\/\//i,"").trim();
var a = e.ownerDocument.createElement("A");
a.href = url;
a.textContent = url;
e.appendChild(e.ownerDocument.createElement("BR"));
e.appendChild(a);
};
} else if (e.tagName == "A" || e.tagName == "SPAN") {
if (e.getAttribute("done")) return;
var s = e.tagName == "A" ? e.href : e.innerHTML;
if (s.match(/\.(gif|jpg|jpeg|png)$/i)) {
e.setAttribute("done", 1);
open2chImgWaiting++;
event.view.setTimeout(function () {
if (s.split("/")[2] != "imgur.com") {
e.outerHTML = "<a done=1 href=" + s + " target=_blank>" + s +
"<br><img src=" + s + " style='max-width:25%;max-height:25%;'></a>";
};
open2chImgWaiting--;
}, open2chImgWaiting * 500);
};
};
};
addEventListener("mousemove", open2chOnMouseMove, false);
})();
89名無しさん@おーぷん :2015/03/20(金)22:06:51 ID:OEr
JavaScriptとCSSを圧縮・軽量化するオンラインツール集 | コリス
http://coliss.com/articles/build-websites/operation/javascript/334.html

/packer/
http://dean.edwards.name/packer/
90名無しさん@おーぷん :2015/03/20(金)22:08:54 ID:OEr
そのままだと行が長すぎて書き込めなかった
>>88のソースを packer で最小化した

JavaScript:(function(){var f=0;function extractImgURLs(b){var a=[];b.replace(/[\w\:\/\.\-]*\.(gif|jpg|jpeg|png)(\W|$)/gim,function(s){s=s.replace(/\W$/,'');
a.push(s)});return a};function open2chOnMouseMove(b){var e=b.target;if(e.tagName=='DD'){if(e.getAttribute('done'))return;e.setAttribute('done',1);
var s=e.innerHTML;s=s.replace('<br>','\n','igm');s=s.replace(/\<[^<>]*\>/gim,'');var c=extractImgURLs(s);
for(var i=0;i<c.length;i++){var d=c[i].trim();if(d.match(/^http.*/i))continue;d='http://'+d.replace(/^.*\/\//i,'').trim();
var a=e.ownerDocument.createElement('A');a.href=d;a.textContent=d;e.appendChild(e.ownerDocument.createElement('BR'));
e.appendChild(a)}}else if(e.tagName=='A'||e.tagName=='SPAN'){if(e.getAttribute('done'))return;var s=e.tagName=='A'?e.href:e.innerHTML;
if(s.match(/\.(gif|jpg|jpeg|png)$/i)){e.setAttribute('done',1);f++;b.view.setTimeout(function(){if(s.split('/')[2]!='imgur.com'){
e.outerHTML='<a done=1 href='+s+' target=_blank>'+s+'<br><img src='+s+' style=\'max-width:25%;max-height:25%;\'></a>'};
f--},f*500)}}};addEventListener('mousemove',open2chOnMouseMove,false)})();
91名無しさん@おーぷん :2015/03/21(土)17:43:14 ID:DAT
/*
統計ページをID数でソート
IDあたりの投稿数の追加
tr[0] = 新スレ投稿数ID数板
*/
JavaScript:(function(){
var doc = document;
var tbody3 = doc.getElementsByTagName("tbody")[3];
if (tbody3.getAttribute("extended") == 1) return;
tbody3.setAttribute("extended", 1);
tbody3.setAttribute("align", "right");
function addPerId(tr, text) {
var e = doc.createElement("td");
e.textContent = text;
tr.insertBefore(e, tr.childNodes[3]);
};
var tr = tbody3.getElementsByTagName("tr");
var td = tr[0].getElementsByTagName("td");
td[3].setAttribute("align", "left"); // 「板」を左揃えにする
addPerId(tr[0], "投稿/ID");
var temp = [];
for(var i = tr.length - 1; i > 0; i--){
var td = tr[i].getElementsByTagName("td");
var newThread = td[0].textContent.replace(/^\+/, "");
var kakiko = td[1].textContent.replace(/^\+/, "");
var idNum = td[2].textContent.replace(/^\+/, "");
var bbs = td[3].children[0].href.match(/\/[^\/]*\/$/)[0].replace("/", "", "g");
var title = td[3].children[0].innerHTML;
td[3].setAttribute("align", "left");
var perId = idNum >= 0 ? parseInt(kakiko/idNum) : 0;
addPerId(tr[i], perId);
temp.push({tr:tr[i], newThread:newThread, kakiko:kakiko, idNum:idNum,
perId:perId, bbs:bbs, title:title});
tbody3.removeChild(tr[i]);
};
temp.sort(function(a, b){return b.idNum - a.idNum;}); // ID数でソート
//temp.sort(function(a, b){return b.perId - a.perId;}); // 投稿数/IDでソート
for(var i = 0; i < temp.length; i++){
tbody3.appendChild(temp[i].tr);
};
})();

92名無しさん@おーぷん :2015/03/21(土)17:45:20 ID:DAT
>>91を短くしたもの

JavaScript:(function(){var c=document;var d=c.getElementsByTagName("tbody")[3];
if(d.getAttribute("extended")==1)return;d.setAttribute("extended",1);
d.setAttribute("align","right");function addPerId(a,b){var e=c.createElement("td");
e.textContent=b;a.insertBefore(e,a.childNodes[3])};var f=d.getElementsByTagName("tr");
var g=f[0].getElementsByTagName("td");g[3].setAttribute("align","left");addPerId(f[0],"投稿/ID");
var h=[];for(var i=f.length-1;i>0;i--){var g=f[i].getElementsByTagName("td");
var j=g[0].textContent.replace(/^\+/,"");var k=g[1].textContent.replace(/^\+/,"");
var l=g[2].textContent.replace(/^\+/,"");var m=g[3].children[0].href.match(/\/[^\/]*\/$/)[0].replace("/","","g");
var n=g[3].children[0].innerHTML;g[3].setAttribute("align","left");var o=l>=0?parseInt(k/l):0;addPerId(f[i],o);
h.push({tr:f[i],newThread:j,kakiko:k,idNum:l,perId:o,bbs:m,title:n});d.removeChild(f[i])};
h.sort(function(a,b){return b.idNum-a.idNum});for(var i=0;i<h.length;i++){d.appendChild(h[i].tr)}})();
93名無しさん@おーぷん :2015/03/21(土)19:43:15 ID:DAT
投稿数の1日あたりの予測追加
一時間当たりの投稿数
ID数でソート
ソート方法をクリックして選べるようにしたい

JavaScript:(function(){var d=document;var f=d.getElementsByTagName("tbody")[3];
if(f.getAttribute("extended")==1)return;f.setAttribute("extended",1);
f.setAttribute("align","right");function addTR(a,b){var e=d.createElement("td");
e.textContent=b;a.insertBefore(e,a.childNodes[3])};var g=f.getElementsByTagName("tr");
var j=g[0].getElementsByTagName("td");j[3].setAttribute("align","left");addTR(g[0],
"投稿/時");addTR(g[0],"投稿/ID");var s=d.getElementById("timerBox").textContent;
var t=s.match(/\d+\:\d+\:\d+/)[0].split(":");var h=parseInt(t[0])+parseInt(t[1])/60+
parseInt(t[2])/(60*60);(function(){var a=document.getElementsByTagName("tbody")[0];
var b=a.getElementsByTagName("tbody")[0];var c=b.childNodes[3].cloneNode(true);
c.childNodes[0].textContent="予測:";
var n=c.childNodes[1].childNodes[0].textContent.match(/\d+/)[0];
c.childNodes[1].childNodes[0].textContent="+"+parseInt(n/h*24);
b.insertBefore(c,b.childNodes[4])})();var k=[];for(var i=g.length-1;i>0;i--)
{var j=g[i].getElementsByTagName("td");var l=j[0].textContent.replace(/^\+/,"");
var m=j[1].textContent.replace(/^\+/,"");var o=j[2].textContent;
var p=j[3].children[0].href.match(/\/[^\/]*\/$/)[0].replace("/","","g");
var q=j[3].children[0].innerHTML;j[3].setAttribute("align","left");
var r=parseInt(m/h);addTR(g[i],r);var u=o>=0?parseInt(m/o):0;addTR(g[i],u);
k.push({tr:g[i],newThread:l,kakiko:m,idNum:o,perId:u,perHour:r,bbs:p,title:q});
f.removeChild(g[i])};k.sort(function(a,b){return a.idNum-b.idNum});
for(var i=k.length-1;i>=0;i--){f.appendChild(k[i].tr)}})();

94名無しさん@おーぷん :2015/03/21(土)20:12:53 ID:3YN
ひとつ改造を依頼していいでしょうか
投稿/IDは小数第一位まで表示できるようになりませんか
95名無しさん@おーぷん :2015/03/21(土)20:41:59 ID:bgG
>>94
勝手に改造してみた

JavaScript:(function(){function f(a,b){var c=g.createElement("td");c.textContent=b;a.insertBefore(c,a.childNodes[3])}var g=document,e=g.getElementsByTagName("tbody")[3];if(1!=e.getAttribute("extended")){e.setAttribute("extended",1);e.setAttribute("align","right");
var c=e.getElementsByTagName("tr"),a=c[0].getElementsByTagName("td");a[3].setAttribute("align","left");f(c[0],"投稿/時");f(c[0],"投稿/ID");var d=g.getElementById("timerBox").textContent.match(/\d+\:\d+\:\d+/)[0].split(":"),l=parseInt(d[0])+
parseInt(d[1])/60+parseInt(d[2])/3600;(function(){var a=document.getElementsByTagName("tbody")[0].getElementsByTagName("tbody")[0],b=a.childNodes[3].cloneNode(!0);b.childNodes[0].textContent="予測:";var c=b.childNodes[1].childNodes[0].textContent.match(/\d+/)[0];
b.childNodes[1].childNodes[0].textContent="+"+parseInt(c/l*24);a.insertBefore(b,a.childNodes[4])})();for(var d=[],b=c.length-1;0<b;b--){var a=c[b].getElementsByTagName("td"),n=a[0].textContent.replace(/^\+/,""),h=a[1].textContent.replace(/^\+/,
""),k=a[2].textContent,p=a[3].children[0].href.match(/\/[^\/]*\/$/)[0].replace("/","","g"),q=a[3].children[0].innerHTML;a[3].setAttribute("align","left");a=parseInt(h/l);f(c[b],a);var m=0<=k?(h/k).toFixed(1):0;f(c[b],m);
d.push({tr:c[b],newThread:n,kakiko:h,idNum:k,perId:m,perHour:a,bbs:p,title:q});e.removeChild(c[b])}d.sort(function(a,b){return a.idNum-b.idNum});for(b=d.length-1;0<=b;b--)e.appendChild(d[b].tr)}})();
96名無しさん@おーぷん :2015/03/21(土)20:42:37 ID:DAT
これいるかね
小数点の見にくさは全角.使えばましになるけど
パット見て、IDあたりの投稿数がわかりにくいと思う

97名無しさん@おーぷん :2015/03/21(土)20:45:24 ID:DAT
四捨五入の整数がいいかな?
98名無しさん@おーぷん :2015/03/21(土)20:52:07 ID:3YN
改造ありがとうございます
わかりやすさは人によるから何ともいえませんが
桁の位置が揃っていれば混乱はしないでしょう
小数第一位版は、特にID数でソートしたものについて
投稿/IDを比較するときに有用だと思っています
整数版とどっちを使うかは人それぞれということで
99名無しさん@おーぷん :2015/03/21(土)20:53:15 ID:DAT
innerHTML使っちゃダメだった

element.innerHTML - Web API インターフェイス | MDN
https://developer.mozilla.org/ja/docs/Web/API/Element/innerHTML
>DOM Level 0。どの標準にも属しません。
100名無しさん@おーぷん :2015/03/21(土)20:54:25 ID:DAT
全角.使った場合

101名無しさん@おーぷん :2015/03/21(土)20:57:21 ID:DAT
投稿/時がおかしなことになってた
102名無しさん@おーぷん :2015/03/21(土)20:58:29 ID:3YN
全角はちょっと違和感があるような
103名無しさん@おーぷん :2015/03/21(土)22:54:46 ID:3YN
1時間あたり投稿数はどう解釈すればいいんでしょう
順序は投稿数と違わないので
104名無しさん@おーぷん :2015/03/21(土)23:23:06 ID:DAT
今日の0時からの書き込み数÷経過時間って意味ですけど
無くてもいいですね
時間によってだいぶ違うから
105名無しさん@おーぷん :2015/05/12(火)22:50:02 ID:FUQ
あげ
106名無しさん@おーぷん :2015/05/12(火)22:50:12 ID:FUQ
ここもダメか…
107名無しさん@おーぷん :2015/05/12(火)22:50:19 ID:FUQ
無念。。
108名無しさん@おーぷん :2015/05/12(火)23:08:44 ID:zKg
あげてす
109名無しさん@おーぷん :2015/05/26(火)20:51:09 ID:y2o
age
110名無しさん@おーぷん :2015/05/26(火)20:51:26 ID:y2o
ageage
111名無しさん@おーぷん :2015/05/26(火)20:51:34 ID:y2o
ageageage
112名無しさん@おーぷん :2015/05/26(火)20:51:53 ID:0Y7
age
113名無しさん@おーぷん :2015/05/26(火)20:51:59 ID:0Y7
ageage
114名無しさん@おーぷん :2015/05/26(火)20:52:11 ID:CCR
age
115名無しさん@おーぷん :2015/05/26(火)20:52:18 ID:CCR
だめか
116名無しさん@おーぷん :2015/05/26(火)20:52:24 ID:CCR
無念
117名無しさん@おーぷん :2015/07/15(水)02:39:47 ID:pV0
>>90
現在のimgurの拡張子無しリンクに対して
マウスなくして、拡張子付リンクに付け替えた表示だけに出来ないですかね?


 □ ←サムネ画像&リンクはhttp://imgur.com/○○○○○
 http://imgur.com/○○○○○.jpg ←リンクはhttp://imgur.com/○○○○○

に対して
 □
 http://imgur.com/○○○○○.jpg
 http://imgur.com/○○○○○.jpg ←リンクはhttp://imgur.com/○○○○○.jpg

みたいに1行追加するだけ
118名無しさん@おーぷん :2015/07/15(水)02:51:25 ID:pV0
>>117
頭中うpしてしまった

現在の状態だと、imgurでの表示になり、
ani-gifがコントロール付表示されて素(右クリック)でDL出来ないから非常に不便

多分マウス(open2chOnMouseMove)関連を削除すればいいのかな?とは思うものの
JavaScriptなんて全く知らないので、命令?がドコで区切れてるやら…

強制sageになっちゃてるけれど、もし気付かれたら
どなたか改変願えないでしょうか
119名無しさん@おーぷん :2015/07/17(金)23:12:33 ID:MiK
>>118
よくわからんが>>90を無視して作った

javascript:(function(){function d(b){[].forEach.call(b.querySelectorAll("dd .imgur>a"),function(a){var b=a.textContent.trim(),c=a.cloneNode(!1);c.href=b;c.textContent=b;c.style.fontSize="10px";a.lastElementChild.innerHTML="";a.lastElementChild.appendChild(c);a.outerHTML=a.innerHTML})
}d(document.querySelector(".thread"));window.MutationObserver&&(new MutationObserver(function(b){b.forEach(function(a){[].forEach.call(a.addedNodes,d)})})).observe(document.querySelector(".thread"),{childList:!0})})();
120118 :2015/07/18(土)01:22:02 ID:K7Z
>>119
返事遅れてすみません

リンク自体書き換えた感じでしょうか?
確かに1行追加する意味はないですもんね
使わせて頂きます
ありがとう御座いました
121名無しさん@おーぷん :2015/07/31(金)12:12:22 ID:fgi
クリックした時にkomeの画像を拡大できるボタン

javascript:(function(){$("#komediv").width(400);$("#klog_view").width(400);$("#kvoice").before("<button id='kzm1'>x1</button>");
$("#kzm1").click(function(){$(".kkorabo").css("height","35");});$("#kvoice").before("<button id='kzm2'>x2</button>");
$("#kzm2").click(function(){$(".kkorabo").css("height","70");});$("#kvoice").before("<button id='kzm3'>x3</button>");
$("#kzm3").click(function(){$(".kkorabo").css("height","105");});})()
122名無しさん@おーぷん :2015/08/25(火)10:28:21 ID:mbd
sageのレスを含めて開いている板の新規レスを確認するブックマークレット
IE非対応

javascript:(function(){function k(){var a=new XMLHttpRequest;a.open("GET",e);return new Promise(function(c,b){a.onload=function(){200!==a.status?b(Error("http error: "+a.status+" "+a.statusText+"\n"+e)):
c(a.response)};a.onerror=function(){b(Error("network error\n"+e))};a.send()})}function l(a){return a.match(/.+/g).reduce(function(a,b){var d=b.match(/^(\d+).+?<>(.+)\((\d+)\)$/);a[d[1]]={name:d[2],count:+d[3]};return a},{})}function g(a){var c=h;a=JSON.stringify(a);localStorage[c]=a}function m(a,c){Object.keys(a).forEach(function(b){c[b]= a[b]})}function n(a,c){
return Object.keys(a).reduce(function(b,d){
c.hasOwnProperty(d)?a[d].count>c[d].count&&(b[d]={name:a[d].name,count:a[d].count-c[d].count}):b[d]=a[d];return b},{})}function p(a){var c="/test/read.cgi/",c=c+(f+"/");
return"<div><div><button>\u5168\u3066\u66f4\u65b0</button></div>"+Object.keys(a).map(function(b){return'<div><a href="'+c+b+'" target="_blank">'+
a[b].name+"(<span>+"+a[b].count+'</span>)</a><button class="updateButton" data-key="'+b+'">\u66f4\u65b0</button><style>.updateButton{margin-left:1em;}</style></div>'}).join("")+ "</div>"}function q(a,c){var b=document.body.lastElementChild;
b.firstElementChild.firstElementChild.addEventListener("click",function(){m(a,c);g(c);[].forEach.call(b.querySelectorAll(".updateButton"),function(a){a.previousElementSibling.lastElementChild.textContent="0"})});b.addEventListener("click",function(b){b=b.target;var e;b.classList
.contains("updateButton")&&(e=b.getAttribute("data-key"),c[e].count=a[e].count,g(c),b.previousElementSibling
.lastElementChild.textContent="0")})}var f=function(){var a= location.pathname,c;c="/test/read.cgi/"===a.slice(0,15)?15:1;return a.slice(c,a.indexOf("/",c))}(),e="/"+f+"/subject.txt",h="subject_"+f;(function(){k().then(l).then(function(a){
var c;c=h;c=localStorage.hasOwnProperty(c)?JSON.parse(localStorage[c]):{};var b=n(a,c),b=p(b);document.body.insertAdjacentHTML("beforeend",b);q(a,c)})["catch"](
function(a){console.error(a);alert(a)})})()})();
123名無しさん@おーぷん :2015/08/25(火)10:51:14 ID:mbd
>>122
キャッシュを回避するよう修正

javascript:(function(){function k(){var a=new XMLHttpRequest;a.open("GET",e);a.setRequestHeader("Cache-Control","no-cache");return new Promise(
function(c,b){a.onload=function(){200!==a.status?b(Error("http error: "+a.status+" "+a.statusText+"\n"+e)):c(a.response)};a.onerror=function(){b(Error("network error\n"+e))};a.send()})}
function l(a){return a.match(/.+/g).reduce(function(a,b){var d=b.match(/^(\d+).+?<>(.+)\((\d+)\)$/);a[d[1]]={name:d[2],count:+d[3]};return a},{})}function g(a){var c=h;a=JSON.stringify(a);
localStorage[c]=a}function m(a,c){Object.keys(a).forEach(function(b){c[b]=a[b]})}function n(a,c){return Object.keys(a).reduce(function(b,d){c.hasOwnProperty(d)?a[d].count>c[d].count&&(b[d]={
name:a[d].name,count:a[d].count-c[d].count}):b[d]=a[d];return b},{})}function p(a){var c="/test/read.cgi/",c=c+(f+"/");
return"<div><div><button>\u5168\u3066\u66f4\u65b0</button></div>"+Object.keys(a).map(function(b){return'<div><a href="'+c+b+'" target="_blank">'+a[b].name+"(<span>+"
+a[b].count+'</span>)</a><button class="updateButton" data-key="'+ b+'">\u66f4\u65b0</button><style>.updateButton{margin-left:1em;}</style></div>'}).join("")+"</div>"}
function q(a,c){var b=document.body.lastElementChild;b.firstElementChild.firstElementChild.addEventListener("click",function(){
m(a,c);g(c);[].forEach.call(b.querySelectorAll(".updateButton"),function(a){a.previousElementSibling.lastElementChild.textContent="0"})});
b.addEventListener("click",function(b){b=b.target;var e;b.classList.contains("updateButton")&&(e=b.getAttribute("data-key"),c[e].count=a[e].count, g(c),b.previousElementSibling.lastElementChild.textContent="0")})}
var f=function(){var a=location.pathname,c;c="/test/read.cgi/"===a.slice(0,15)?15:1;return a.slice(c,a.indexOf("/",c))}(),
e="/"+f+"/subject.txt",h="subject_"+f;(function(){k().then(l).then(function(a){var c;c=h;c=localStorage.hasOwnProperty(c)?
JSON.parse(localStorage[c]):{};var b=n(a,c),b=p(b);document.body.insertAdjacentHTML("beforeend",b);q(a,c)})["catch"](function(a){console.error(a);alert(a)})})()})();
124名無しさん@おーぷん :2015/08/29(土)04:20:29 ID:eG5
ageage
125名無しさん@おーぷん :2015/09/10(木)03:59:05 ID:rKq
age
126名無しさん@おーぷん :2015/11/12(木)22:50:26 ID:GIP
一応あげとく
127名無しさん@おーぷん :2015/11/27(金)21:51:35 ID:1hG
open2chのソース
http://toro.open2ch.net/test/read.cgi/tech/1372506269/238
のブックマークレットバージョン

このurlで試しすと、ヘッドラインからVIPとなんJのスレを削除します
http://open2ch.net/headline.cgi?o=updated&n=300&delbbs=news4plus%20news4vip%20livejupiter#form

javascript:(function(){function getURIQueryObj(b){var c={};var m=b.match(/\?.*/);
if(m){var s=m[0];s=s?s.slice(1):"";s=s.replace(/#.*$/,"");var a=s.split("&");
for(var i=0;i<a.length;i++){var p=a[i].indexOf("=");if(p){var d=decodeURIComponent(a[i].slice(0,p));
var e=decodeURIComponent(a[i].slice(p+1));c[d]=e}}}return c};var f=document;
var g=getURIQueryObj(f.location.href)["delbbs"];g=g?g.split(" "):[];
var h=getURIQueryObj(f.location.href)["deltitle"];h=h?h.split(" "):[];
var j=f.getElementsByTagName("tbody");var a=j[1].getElementsByTagName("a");
function checkTitle(a){for(var i=0;i<h.length;i++){if(a.indexOf(h[i])>=0)return true}
return false}for(var i=0;i<a.length;i++){var k=a[i].pathname.split("/")[3];
if((g.indexOf(k)>=0)||checkTitle(a[i].textContent))
a[i].parentElement.parentElement.setAttribute("hidden",1)}})();
128名無しさん@おーぷん :2015/11/28(土)22:54:53 ID:VpA
>>86 の複数板のヘッドラインも、URIで指定してできそう
129名無しさん@おーぷん :2015/12/04(金)17:39:00 ID:U4Q
あげげあげ
130名無しさん@おーぷん :2016/05/09(月)02:23:27 ID:xtQ
komeお絵かきの描画色を指定するブックマークレット
黒赤緑青白のボタンと、テキスト指定するボックスが追加されます。
テキストをコピペした場合は1回エンター叩いてください。

javascript:(function(){
ctx = document.getElementById("kcanvas").getContext("2d");
$("#kcanvas_view").before('<input id="kcc_0" type="button" value="黒">');
$("#kcc_0").click(function(){ctx.strokeStyle="black"});
$("#kcanvas_view").before('<input id="kcc_1" type="button" value="赤">');
$("#kcc_1").click(function(){ctx.strokeStyle="red"});
$("#kcanvas_view").before('<input id="kcc_2" type="button" value="緑">');
$("#kcc_2").click(function(){ctx.strokeStyle="green"});
$("#kcanvas_view").before('<input id="kcc_3" type="button" value="青">');
$("#kcc_3").click(function(){ctx.strokeStyle="blue"});
$("#kcanvas_view").before('<input id="kcc_4" type="button" value="白">');
$("#kcc_4").click(function(){ctx.strokeStyle="white"});
$("#kcanvas_view").before('色:<input id="kcc_ex" type="text" value="#000000">');
$("#kcc_ex").keyup(function(){ctx.strokeStyle=$("#kcc_ex").val()});
})();
131名無しさん@おーぷん :2016/09/27(火)16:09:14 ID:M5I
お絵かきの高機能モードで、「jsloader load error」を避けて使うためのブックマークレット
高機能モードのチェックボックスを入れる代わりにこれを使う

javascript:loadOekakiEx=function(){};/*!
* $script.js JS loader & dependency manager
* https://github.com/ded/script.js
* (c) Dustin Diaz 2014 | License MIT
*/(function(g,d){"undefined"!=typeof module&&module.exports?module.exports=d():"function"==typeof define&&define.amd?define(d):this[g]=d()})("$script",function(){function g(a,k){for(var b=0,c=a.length;b<c;++b)if(!k(a[b]))return r;return 1}function d(a,c){g(a,function(a){return!c(a)})}
function c(a,k,b){function v(a){return a.call?a():n[a]}function m(){if(!--r){n[q]=1;f&&f();for(var a in l)g(a.split("|"),v)&&!d(l[a],v)&&(l[a]=[])}}a=a[h]?a:[a];var e=k&&k.call,f=e?k:b,q=e?a.join(""):k,r=a.length;return setTimeout(function(){d(a,
function y(a,b){if(null===a)return m();a=b||-1!==a.indexOf(".js")||/^https?:\/\//.test(a)||!t?a:t+a+".js";if(p[a])return 2==p[a]?m():setTimeout(function(){y(a,!0)},0);p[a]=1;w(a,m)})},0),c}function w(a,c){var b=q.createElement("script"),d;b.onload=b.onerror=b[x]=function(){
b[e]&&!/^c|loade/.test(b[e])||d||(b.onload=b[x]=null,d=1,p[a]=2,c())};b.async=1;b.src=u?a+(-1===a.indexOf("?")?"?":"&")+u:a;f.insertBefore(b,f.lastChild)}var q=document,f=q.getElementsByTagName("head")[0],r=!1,h="push",e="readyState",
x="onreadystatechange",n={},l={},p={},t,u;return c.get=w,c.order=function(a,d,b){(function m(e){e=a.shift();a.length?c(e,m):c(e,d,b)})()},c.path=function(a){t=a},c.urlArgs=function(a){u=a},c.ready=function(a,e,b){a=a[h]?a:[a];var f=[];return!d(a,function(a){n[a]||f[h](a)})&&g(a,function(a){
return n[a]})?e():!function(a){l[a]=l[a]||[];l[a][h](e);b&&b(f)}(a.join("|")),c},c.done=function(a){c([null],a)},c});var EXFlag;
/* original source: http://let.st-hatelabo.com/Fxnimasu/let/hJmd88Dl4M4W.bookmarklet.js */
(function(){function g(){d(c,function(){checkNewVersion("17.0.2",VERSION_INFO);loadIcons("http://xnimasu.github.io/o2oEXLite/img/icon/");crUI();setEvent();ls.mode==MODE.L&&setLiteModeEvent();ls.mode==MODE.H&&setHighModeEvent();
initCanvas()})}function d(c,d){var f=[],g=/.css$/,h;for(h in c){var e=c[h];g.test(e)?$("<link>",{href:e,type:"text/css",rel:"stylesheet"}).appendTo($("body")):f.push(e)}
$script(f,d)}if(!EXFlag){EXFlag=!0;var c=["http://xnimasu.github.io/o2oEXLite/data/version.js","http://xnimasu.github.io/o2oEXLite/lib/jquery-ui/jquery-ui.min.js","http://xnimasu.github.io/o2oEXLite/lib/jquery-ui/jquery.ui.touch-punch.min.js",
"http://xnimasu.github.io/o2oEXLite/lib/pep/jquery.pep.js","http://xnimasu.github.io/o2oEXLite/css/jquery-ui/jquery-ui.min.css",
"http://xnimasu.github.io/o2oEXLite/lib/curve/spline.js","http://xnimasu.github.io/o2oEXLite/lib/glfx/glfx.js","http://xnimasu.github.io/o2oEXLite/lib/jcrop/jquery.Jcrop.min.js",
"http://xnimasu.github.io/o2oEXLite/css/jcrop/jquery.Jcrop.min.css","http://xnimasu.github.io/o2oEXLite/css/o2oEXLite.css","http://xnimasu.github.io/o2oEXLite/js/17.0.2/o2oEXLite.js"];
g()}})();
132Awn◆AwnAwnAwnA :2016/10/13(木)21:42:54 ID:w7Q
NGキーワードに自動で反応してアク禁するブックマークレット
http://let.hatelabo.jp/Awn/let/hJmd95KP8MNC
http://open2chnews4vipkotekaiseki.neocities.org/atracaapb.html
133Awn◆AwnAwnAwnA :2017/01/11(水)14:20:09 ID:uLH
奉納

NGキーワードに自動で反応してアク禁するブックマークレット2
http://let.hatelabo.jp/Awn/let/hLHWrMzj08dj


動作様子
自動アク禁のテストをしたいので書き込みしに来てください!
http://hayabusa.open2ch.net/test/read.cgi/news4vip/1483790401/
134名無しさん@おーぷん :2017/10/07(土)08:18:13 ID:7LH
5chの過去ログを日時で表示
KAKOLOG livejupiter
https://hawk.5ch.net/livejupiter/kako/kako0000.html

javascript:(function(){
function pushAll(dst, src){for(var i=0;i<src.length;i++){dst.push(src[i]);}}
function date(id,time) {
var day = '日月火水木金土';
var d = new Date();
d.setTime(id * 1000);
return d.toLocaleDateString() + '(' + day[d.getDay()] + ')' + (time?' '+d.toLocaleTimeString():'');
}
var a = [];
pushAll(a, document.getElementsByTagName("a"));
pushAll(a, document.getElementsByClassName("menu_here"));
pushAll(a, document.getElementsByClassName("main_range"));
for (var i = 0; i < a.length; i++) {
var e = a[i];
if (e.textContent.match(/\d{10}-\d{10}/)) {
e.textContent = e.textContent.replace(/\d{10}/gm, function(s){
return date(parseInt(s),false);
});
} else if (e.textContent.match(/\d{10}(|\s)\-(|\s)\d{10}/) || e.textContent.match(/\d{10}\.dat/)) {
e.textContent = e.textContent.replace(/\d{10}/gm, function(s){
return date(parseInt(s),true);
});
}
}
})();

135名無しさん@おーぷん :2017/10/07(土)13:21:31 ID:7LH
履歴から'news','news4vip','livejupiter','nohara'のスレを削除
長すぎるからか、一度に全部削除できないみたい

javascript:(function(){
function readURI(uri) {
var x = new XMLHttpRequest();
x.open("GET", uri, false);
x.send(null);
return x.responseText;
}
function delBBS(bbs){
var n=0;
var uri = "http://open2ch.net/test/history.cgi?mode=delete";
var a = document.getElementsByClassName('th');
for (var i = 0; i < a.length; i++) {
var s=a[i].getAttribute('key').split(":");
if (bbs.indexOf(s[0])>=0) {
uri=uri+"&chk:"+s[0]+":"+s[1]+"=1";
n++;
}
}
readURI(uri);
console.log(n+' deleted from open2ch history.');
}
delBBS(['news','news4vip','livejupiter','nohara']);
document.location.href = "http://open2ch.net/test/history.cgi";
})();
136名無しさん@おーぷん :2017/12/01(金)08:27:54 ID:GKR
>>135
下から削除しないとダメなのかも
for (var i=a.length-1;i>=0;i--) {
137名無しさん@おーぷん :2018/06/14(木)19:19:11 ID:Qy7
Oculus Goで日本語変換が使える件
http://www.itmedia.co.jp/news/articles/1806/13/news106.html

ブックマークレットで日本語変換という力技
138名無しさん@おーぷん :2018/07/20(金)10:54:34 ID:fGQ
FirefoxだとCSPの影響を受けるんだな
https://bugzilla.mozilla.org/show_bug.cgi?id=866522
139名無しさん@おーぷん :2018/08/13(月)08:29:44 ID:IHR
おーぷんのスレでIDごとにレス数を集計し、結果を降順で表示するブックマークレット

alert([...[...document.querySelectorAll('._id')].reduce((a,n)=>((i=>a.set(i,(a.get(i)||0)+1))(n.getAttribute('val')),a),new Map).entries()].sort(([,a],[,b])=>b-a).join('\n'));
140名無しさん@おーぷん :2018/08/13(月)08:30:46 ID:IHR
javascript:って入れると書き込みできないな

新着レスの表示 | ここまで読んだ

名前: mail:





ブックマークレット
CRITEO