ほぼ完全自動アク禁ブックマークレット2
by
Awn
2017-01-07 [2017/01/07 19:39:10]
@@ -7,31 +7,91 @@
(function() {
+ //class
+ class MutationListener {
+ constructor(f) {
+ this.target = document.querySelector("div.thread");
+ this.option = { childList: true };
+ this.mo = new MutationObserver(f);
+ }
+
+ start(){
+ this.mo.observe(this.target, this.option);
+ }
+
+ stop(){
+ this.mo.disconnect();
+ }
+ }
+
+
+ //member
+ let mo;
+
//initializer
_init();
+
//function
function _init() {
_embedForm();
-
+ ShowBtnEventListener();
+ SaveBtnEventListener();
+ mo = new MutationListener(_execAkukin);
+ mo.start();
}
function _embedForm() {
let section = document.createElement("section");
section.setAttribute("id", "autoAkuSection");
- section.innerHTML = '<hr><h2 style="color:red;">自動アク禁設定</h2><input type="button" name="b_autoakuShow" id="b_autoakuShow" value="開く">';
+ section.innerHTML = '<hr><h2 style="color:red;">自動アク禁設定</h2><input type="button" name="b_autoAkuShow" id="b_autoAkuShow" value="閉じる">';
let phorm = document.createElement("form");
phorm.setAttribute("name", "fm_autoAku");
phorm.setAttribute("id", "fm_autoAku");
- phorm.innerHTML = '<fieldset><legend>自動投稿する時の名前とメール欄と本文</legend><label>名前:<input type="text" size="40" name="autoAku_defaultName" placeholder="(省略化)自動アク禁用の名前"></label><br><label>mail:<input type="text" size="40" name="autoAku_defaultMail" placeholder="(省略化)自動アク禁用のmail"></label><br><textarea rows="5" cols="56" name="autoAku_defaultText" placeholder="ここに書いたメッセージに!aku42といったアク禁コマンドが自動で足されます。"></textarea></fieldset><fieldset><legend>自動アク禁キーワード設定</legend><label>アク禁ワード↓<br><textarea rows="5" cols="56" name="autoAku_words" placeholder="改行区切りで入力"></textarea><br></label><label>アク禁ネーム↓<br><textarea rows="5" cols="56" name="autoAku_names" placeholder="改行区切りで入力"></textarea><br></label><label>アク禁メール↓<br><textarea rows="5" cols="56" name="autoAku_mails" placeholder="改行区切りで入力"></textarea><br></label><label>アク禁id↓<br><textarea rows="5" cols="56" name="autoAku_ids" placeholder="改行区切りで入力"></textarea><br></label></fieldset><fieldset><legend>その他の設定</legend>正規表現を利用する:<input type="radio" name="enableRegexp" checked>OFF<input type="radio" name="enableRegexp">ON<br>アク禁を実行する :<input type="radio" name="enableAkukin" checked>OFF<input type="radio" name="enableAkukin">ON</fieldset><input type="button" name="b_autoakuSave" value="アク禁設定を保存する">';
+ phorm.setAttribute("style", "display:block;");
+ phorm.innerHTML = '<fieldset><legend>自動投稿する時の名前とメール欄と本文</legend><label>名前:<input type="text" size="40" name="autoAku_defaultName" placeholder="(省略化)自動アク禁用の名前"></label><br><label>mail:<input type="text" size="40" name="autoAku_defaultMail" placeholder="(省略化)自動アク禁用のmail"></label><br><textarea rows="5" cols="56" name="autoAku_defaultText" placeholder="ここに書いたメッセージに!aku42といったアク禁コマンドが自動で足されます。"></textarea></fieldset><fieldset><legend>自動アク禁キーワード設定</legend><label>アク禁ワード↓<br><textarea rows="5" cols="56" name="autoAku_words" placeholder="改行区切りで入力"></textarea><br></label><label>アク禁ネーム↓<br><textarea rows="5" cols="56" name="autoAku_names" placeholder="改行区切りで入力"></textarea><br></label><label>アク禁メール↓<br><textarea rows="5" cols="56" name="autoAku_mails" placeholder="改行区切りで入力"></textarea><br></label><label>アク禁id↓<br><textarea rows="5" cols="56" name="autoAku_ids" placeholder="改行区切りで入力"></textarea><br></label></fieldset><fieldset><legend>その他の設定</legend>正規表現を利用する:<input type="radio" name="enableRegexp" value="OFF" checked>OFF<input type="radio" name="enableRegexp" value="ON">ON<br>アク禁を実行する :<input type="radio" name="enableAkukin" value="OFF" checked>OFF<input type="radio" name="enableAkukin" value="ON">ON</fieldset><input type="button" id="b_autoAkuSave" name="b_autoAkuSave" value="アク禁設定を保存する">';
document.body.appendChild(section);
section.appendChild(phorm);
return;
}
+ function ShowBtnEventListener() {
+ let elm = document.querySelector("#b_autoAkuShow");
+ elm.addEventListener("click", function(ev) {
+ let form = document.querySelector("#fm_autoAku");
+ let style = form.getAttribute("style");
+ if (style.includes("none")) {
+ form.setAttribute("style", "display:block;");
+ elm.value = "開じる";
+ } else {
+ form.setAttribute("style", "display:none;");
+ elm.value = "開く";
+ }
+ });
+ }
+
+ function SaveBtnEventListener() {
+ let elm = document.querySelector("#b_autoAkuSave");
+ elm.addEventListener("click", function(ev) {
+ let fd = new FormData(ev.target.form);
+ for (let value of fd) {
+ console.log(value);
+ }
+ });
+ }
+
+ function _execAkukin(record) {
+ let newres = record[0].addedNodes;
+ console.log(newres);
+ }
+
+
+ /* function like tool*/
+
+
/* wrapper function */
function _getStorage(key) {
return localStorage.getItem(key);
@@ -41,5 +101,9 @@
localStorage.setItem(key.val);
}
+ function _removeStorage(key) {
+ return localStorage.removeItem(key);
+ }
+
return;
})();
/*
* @title ほぼ完全自動アク禁ブックマークレット2
* @include http://*.open2ch.net
* @license MIT License
*/
//作った人: Awn
(function() {
//class
class MutationListener {
constructor(f) {
this.target = document.querySelector("div.thread");
this.option = { childList: true };
this.mo = new MutationObserver(f);
}
start(){
this.mo.observe(this.target, this.option);
}
stop(){
this.mo.disconnect();
}
}
//member
let mo;
//initializer
_init();
//function
function _init() {
_embedForm();
ShowBtnEventListener();
SaveBtnEventListener();
mo = new MutationListener(_execAkukin);
mo.start();
}
function _embedForm() {
let section = document.createElement("section");
section.setAttribute("id", "autoAkuSection");
section.innerHTML = '<hr><h2 style="color:red;">自動アク禁設定</h2><input type="button" name="b_autoAkuShow" id="b_autoAkuShow" value="閉じる">';
let phorm = document.createElement("form");
phorm.setAttribute("name", "fm_autoAku");
phorm.setAttribute("id", "fm_autoAku");
phorm.setAttribute("style", "display:block;");
phorm.innerHTML = '<fieldset><legend>自動投稿する時の名前とメール欄と本文</legend><label>名前:<input type="text" size="40" name="autoAku_defaultName" placeholder="(省略化)自動アク禁用の名前"></label><br><label>mail:<input type="text" size="40" name="autoAku_defaultMail" placeholder="(省略化)自動アク禁用のmail"></label><br><textarea rows="5" cols="56" name="autoAku_defaultText" placeholder="ここに書いたメッセージに!aku42といったアク禁コマンドが自動で足されます。"></textarea></fieldset><fieldset><legend>自動アク禁キーワード設定</legend><label>アク禁ワード↓<br><textarea rows="5" cols="56" name="autoAku_words" placeholder="改行区切りで入力"></textarea><br></label><label>アク禁ネーム↓<br><textarea rows="5" cols="56" name="autoAku_names" placeholder="改行区切りで入力"></textarea><br></label><label>アク禁メール↓<br><textarea rows="5" cols="56" name="autoAku_mails" placeholder="改行区切りで入力"></textarea><br></label><label>アク禁id↓<br><textarea rows="5" cols="56" name="autoAku_ids" placeholder="改行区切りで入力"></textarea><br></label></fieldset><fieldset><legend>その他の設定</legend>正規表現を利用する:<input type="radio" name="enableRegexp" value="OFF" checked>OFF<input type="radio" name="enableRegexp" value="ON">ON<br>アク禁を実行する :<input type="radio" name="enableAkukin" value="OFF" checked>OFF<input type="radio" name="enableAkukin" value="ON">ON</fieldset><input type="button" id="b_autoAkuSave" name="b_autoAkuSave" value="アク禁設定を保存する">';
document.body.appendChild(section);
section.appendChild(phorm);
return;
}
function ShowBtnEventListener() {
let elm = document.querySelector("#b_autoAkuShow");
elm.addEventListener("click", function(ev) {
let form = document.querySelector("#fm_autoAku");
let style = form.getAttribute("style");
if (style.includes("none")) {
form.setAttribute("style", "display:block;");
elm.value = "開じる";
} else {
form.setAttribute("style", "display:none;");
elm.value = "開く";
}
});
}
function SaveBtnEventListener() {
let elm = document.querySelector("#b_autoAkuSave");
elm.addEventListener("click", function(ev) {
let fd = new FormData(ev.target.form);
for (let value of fd) {
console.log(value);
}
});
}
function _execAkukin(record) {
let newres = record[0].addedNodes;
console.log(newres);
}
/* function like tool*/
/* wrapper function */
function _getStorage(key) {
return localStorage.getItem(key);
}
function _setStorage(key, val) {
localStorage.setItem(key.val);
}
function _removeStorage(key) {
return localStorage.removeItem(key);
}
return;
})();
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。