Scrapboxから電話する(CallButton)
使い方
電話番号っぽい部分が文中からピックアップされます
https://gyazo.com/580ab8f5968b28761ca272492c9999bb
タップすると発信します
https://gyazo.com/ba5ef7859e87876021e42fb4118bf71a
iPhoneだと確認ダイアログが出るはずです
番号は複数表示可能です
https://gyazo.com/ae185f35d0e70f991546d78866b4106d
階層っぽい構造にも対応させました
https://gyazo.com/924c726051f88ae45e4b2c214a34f135
備考
番号は二種類の記述に対応しています
xxx(xxxx)xxxx
xxx-xxxx-xxxx
入力は今のところ半角のみです!すみません!
コードを弄ることで文字サイズを変更できます
動作確認はiPhone6s(iOS11)のOhajikiとPorterのみで行っています
androidでも動くとは思います…………
コード
code:script.js
const TELExp = /\d{2,5}-(\d{1,4}-)\d{4}/g const ____TELFontSize = "18px" //メニューの文字サイズを変更できます。
const TELMenuTitle = 'CallButton'
const ____TELUserAgent = window.navigator.userAgent
const re = /^(\s*)/
scrapbox.PageMenu.addMenu({
title: TELMenuTitle,
onClick: function () {
let Opacityswitch = null , i = -1
scrapbox.PageMenu(TELMenuTitle).removeAllItems()
for (let line of scrapbox.Page.lines) { i++
let TELExist = line.text.match(TELExp)
if(!TELExist) continue
let TELName = null
const indentLength = re.exec(line.text)1.length function SonomamaName() {TELName= TELExist}
Opacityswitch = true
if(indentLength>0) {const overline = /^(\s*)/.exec(scrapbox.Page.linesi-1.text) if(overline1 !== overline.input){TELName = ${scrapbox.Page.lines[i-1].text}: ${TELExist}} else{SonomamaName() }}
else {SonomamaName()}
scrapbox.PageMenu(TELMenuTitle).addItem({
title: TELName, onClick: function() {
if (new RegExp(____TEL_blankBrowsers.join('|'), 'i').test(____TELUserAgent))
{window.open(tel:${TELExist})}else{location.href=tel:${TELExist}}
}
})
$(ul[aria-labelledby=${TELMenuTitle}]).css({"font-size":${____TELFontSize}})
}
if(!Opacityswitch){$(ul[aria-labelledby=${TELMenuTitle}]).css({"font-size":$(".dropdown-menu").css("font-size")})
scrapbox.PageMenu(TELMenuTitle).addItem({title:'電話番号が見つかりません',onClick: function(){;} })}
}
})
その他色々
アドレス帳って登録するのめんどくないですか?という気持ちから作った
ページ内容を予め読んでおき、電話番号がなければアイコンの不透明度を下げて存在感を薄くする、というアイデアもあった
が、このscriptのために毎回ページ読み込み時の処理を増やすのは余計な真似な気がしてやめた
インライン上の電話番号を発信できるリンクに置き換えるみたいな奴もいつか挑戦したいです