scrapcalc-script
yuyasurarin-button-scriptで使っている
使用中に色を変える
code:style.css
.deco-\% {
color: #111;
background-color: #ffddff;
padding: 0.1em 0.2em 0.1em 0.2em;
}
.scrapcalc_result {
font-style:italic;
font-weight:bold;
color: #111;
background-color:yellow;
}
code:script.js
function scrapcalc_exec(){
var style = document.getElementById('__calc__')
if(!style){
var css = .deco-\\%{color:#111;background-color:#ffddff;padding:0.1em0.2em0.1em0.2em;}.scrapcalc_result{font-style:italic;font-weight:bold;color:#111;background-color:yellow;}
style = document.createElement('style')
style.setAttribute('id', '__calc__')
style.appendChild(document.createTextNode(css))
document.head.appendChild(style)
}
for(let e of document.querySelectorAll('.deco-\\%')){
let text = e.innerText;
// 全角カギカッコを配列などで使えるようにする苦しい工夫
// let expr = decodeURI(text).replaceAll('[','').replaceAll(']','')
let expr = text.replaceAll('[','').replaceAll(']','') // URIデコードしないようにした
//if(text.match(/=/)){
if(false) { // 常時計算結果を表示するようにした
(0,eval)(expr); // 何故かこれでstrictが有効でなくなる?
}
else {
let span = document.createElement('span');
span.classList.add("scrapcalc_result");
span.innerText = (0,eval)(expr);
e.parentNode.appendChild(span)
e.classList.add("scrapcalc_exp")
e.style.display = 'none';
}
}
}
function scrapcalc_reset(){
for(let e of document.querySelectorAll('.scrapcalc_result')){
e.remove();
}
for(let e of document.querySelectorAll('.scrapcalc_exp')){
e.style.display = 'inline';
}
}
export function scrapcalc_toggle() {
if(document.querySelectorAll('.scrapcalc_result').length == 0){
scrapcalc_exec();
}
else {
scrapcalc_reset();
}
}
document.addEventListener('keydown', e => {
if (e.key == 'q' && e.ctrlKey){ // Ctrl-Qで実行
scrapcalc_toggle();
}
})
1 + 1