Google Chrome の開発者ツールを使うことで、各サイトのネットワーク通信の中身(どのようなパラメータでリクエストを投げ、どのようなリスポンスが返ってきているのか)を調べることができます。
その内容を調べることで業務を効率化したり、スクレイピングを行なったりするのですが、今回はこの知識を応用して、静的サイトにも関わらずSlackのスタンプを作るという機能を実現したいと思います。
作ったもの
Special thanks go to "絵文字ジェネレーター - Slack 向け絵文字を無料で簡単生成"
コード
html
<div class="display">
<img id="emoji" src="https://dashboard.snapcraft.io/site_media/appmedia/2019/01/Snapcraft_256x256.png" width="128" height="128" onerror="this.src='https://dashboard.snapcraft.io/site_media/appmedia/2019/01/Snapcraft_256x256.png';" />
</div>
<div class="container">
<div class="col">
<label for="text">text</label><br>
<input id="text" type="text" placeholder="例)熱盛">
</div>
<div class="col">
<label for="font">font</label><br>
<select id="font" size="6">
<option selected value="notosans-mono-bold">Noto Sans Mono CJK JP Bold</option>
<option value="mplus-1p-black">M+ 1p black</option>
<option value="rounded-x-mplus-1p-black">Rounded M+ 1p black</option>
<option value="ipamjm">IPAmj明朝</option>
<option value="aoyagireisyoshimo">青柳隷書しも</option>
<option value="LinLibertine_RBah">LinLibertine Bold</option>
</select>
</div>
<div class="col-color">
<label for="color">text color: </label><input type="color" id="color" value="#EC71A1"><br>
<label for="bgcolor">background color: </label><input type="color" id="bgcolor" value="#FFFFFF">
</div>
</div>
JavaScript
window.addEventListener('DOMContentLoaded',
function() {
if (HTMLVideoElement) {
// ページ上の要素を取得
var emoji = document.querySelector('#emoji');
var text = document.querySelector('#text');
var font = document.querySelector('#font');
var color = document.querySelector('#color');
var bgcolor = document.querySelector('#bgcolor');
// フォーム内の要素に変更があると発火
text.addEventListener('change', function (e) {
changeSRC(emoji, text, font, color, bgcolor);
});
font.addEventListener('change', function (e) {
changeSRC(emoji, text, font, color, bgcolor);
});
color.addEventListener('change', function (e) {
changeSRC(emoji, text, font, color, bgcolor);
});
bgcolor.addEventListener('change', function (e) {
changeSRC(emoji, text, font, color, bgcolor);
});
}
}
);
var changeSRC = function(emoji, text, font, color, bgcolor){
const base = "https://emoji-gen.ninja/emoji_download?align=center&size_fixed=false&stretch=true&public_fg=true&locale=ja";
var url = base + "&text=" + text.value + "&font=" + font.value + "&color=" + color.value.substring(1,7) + "FF" + "&back_color=" + bgcolor.value.substring(1,7) + "FF";
emoji.setAttribute('src', url)
//download.setAttribute('href', url)
}
css
.display{
text-align: center;
margin: 20px auto;
}
.container{
text-align: center;
width: 100%;
}
.col{
font-size: 1.2em;
font-weight: bold;
display: table-cell;
width: 33%;
padding: 8px;
}
.col-color{
text-align: left;
font-size: 1.2em;
font-weight: bold;
display: table-cell;
width: 33%;
padding: 8px;
}
label {
color: #80273F;
}
#text {
border: 0;
border-bottom: 1px solid #d1d1d1;
font-size: 1.2em;
padding: 8px;
}