JavaScript関連のことを調べてみた2020年03月06日

JavaScript関連のことを調べてみた2020年03月06日

youtubeで1秒スキップするショートカット

# 概要

youtubeの動画再生中に1秒スキップするショートカットを作成するコードを作りました。先に言っておくと、youtubeではデフォルトで以下の便利なショートカットがあります。ただ、5秒では進み過ぎてしまう場合など、スキップ時間をカスタマイズしたい時に役に立ちます。

※youtubeにデフォルトで備わっているショートカット例
・「→」 : 5秒進む
・「←」 : 5秒戻る
・「L」 : 10秒進む
・「J」 : 10秒戻る
・pause中に「.」 : 1フレーム進む
・pause中に「,」 : 1フレーム戻る

作成にあたって、tampermonkeyというchrome拡張機能を使用しました。※[tampermonkeyの参考](https://www.lisz-works.com/entry/chrome-tampermonkey)
この拡張機能はユーザースクリプトといって、ユーザー独自のスクリプトをwebサイトを閲覧する際にそのユーザーにだけ反映させる事ができます。コードの仕様はjavascrpt同様です。

# コード
“`javascript
// ==UserS

元記事を表示

動的に背景画像を変更する(Ruby on rails,JavaScript)

#はじめに
画像アドレスを入力することで、
背景画像を動的に変更する方法について書いていきます
#実行
基本となるビューファイルは次のようにします。

“`haml:wall.haml.html
.body
= text_area “object_name”, {class: “wall-url”},{id: “wall-url”}
.wall-btn 画像を変える

“`
`texr_area`が画像アドレスを張り付ける部分で、`.wall-btn`を押したら画像を変わるものとします。

次にJavaScriptです。(jQueryで書いています)

“`javascript:wall.js
$(function(){
$(“.wall-btn”).on(“click”,function(){
})
});
“`
これで、`.wall-btn`をクリックした時に発火する関数ができました。
次は、処理の内容を書いていきます。

“`javascript:wall.js
$(function(){
$(“.wall-btn”).on(“click”,

元記事を表示

Vue.jsとElmを比べてみよう! テンプレートとview編

Vue.jsは「[簡単である](https://jp.vuejs.org/v2/guide/)」Elmは「[シンプルであること](https://guide.elm-lang.org/)」ということがガイド等で強調されています。私の中では上手く抽象的な言葉のレベルでこれらを整理することが出来なかったので、二つのフレームワーク(言語)で意識し続けなければならないであろうHTMLの表現を比較することで、それぞれの特徴や問題点を考えてみることにしました。その中でもアプリケーションで特に重要であろう複数の値の扱いに特化して比較してみます。

## オブジェクトの表示

### Vue

おそらく多用することであろう汎用ループを扱うことが可能なディレクティブ`v-for`を用いていきます。

“`html

  • {{ item.message }}

“`

起動に必要な最低限のコードの中に、テンプレートの中で使用するデータを`dat

元記事を表示

【JavaScript】 “data”って何?

JavaScriptで「???」となったので調べた備忘録です。

“`
$(“#button”).on(“click”, {when:”morning”, message: “Good Morning”}, function (e){
console.log(e.data.message);
});
“`

これでボタンを押したら”Good Morning”が出力されます。

`foo.data.message`の`data`について、前から何だろうなと思いながらをあまり理解していませんでした。
jQueryの仕組みなのかJavaScriptの仕組みなのかもわかっておらず、最近改めて調べていてようやく正体がJavaScriptのイベントオブジェクトのプロパティなるものだとわかりました。

#「data」の正体
「ボタンを押す」というような出来事のことをイベントといい、このイベントが発火した時に実行されるコードをイベントハンドラ(イベントリスナー)と言います。
このイベントハンドラは引数としてオブジェクトを受け取るのですが、これがイベントオブジェクトです。
つまり今回では`fu

元記事を表示

Laravel6でfetchによる非同期ファイルアップロードする

# つまずいたのでメモ!!

## 注意点
・credentialsの指定
・X-CSRF-TOKENの指定
・headersにContent-Typeは不要

“`javascript
// ファイルアップロード(Fetch Ver)
const FileUploadFetch = (f) => {
var formData = new FormData();
formData.append(‘paramA’, ‘dataA’);
formData.append(‘paramB’, ‘dataB’);
formData.append(‘file’, f);

fetch(‘/sample/upload’, {
method: “POST”,
body: formData,
credentials: “same-origin”,
headers: {
‘X-CSRF-TOKEN’: ‘{{ csrf_token() }}’
},
})
.th

元記事を表示

初心者によるプログラミング学習ログ 255日目

#100日チャレンジの255日目
twitterの100日チャレンジ#タグ、#100DaysOfCode実施中です。
すでに100日超えましたが、継続。
100日チャレンジは、ぱぺまぺの中ではプログラミングに限らず継続学習のために使っています。
255日目は、

【Javascript】全部ES6のループ文にしたかった最後の難関だったfor (let i = 0; i < 10; i++)をやっと抹殺した

FormArrayを10個つくる

### 憎きfor文
“`ts
const array = new FormArray([]);
for (let i = 0; i < 10; i++) { const fg = this.formBuilder.group({ id: [null], name: [null], code: [null] }); array.push(fg); } ``` ↓ ### [...Array(10)] ```ts const array = this.formBuilder.array([...Array(10)].map(() =>
this.formBuilder.group({
id: [null],
name: [null],
code: [null]
}));
“`

が、これで自宅の環境では動いたのに職場の環境でやったらエラーになった
(lengthは10だけどemptyの配列が作られた)

### Array.from(Array(10))
“`ts

元記事を表示

独学でオンラインWebアプリメモ帳サービスを開発した記録

会員登録不要、無料で使用・保存できるオンラインWEBアプリメモ帳サービスを開発した記録です。
素人の私でもWEBサービスを作成できるので、参考にいただければ幸いです。
## ■サイト
メモ帳(メモ・ロモ)|会員登録不要で無料で利用可能のオンラインWEBアプリメモ帳サービス
http://memo.lomo.jp/
## ■トップ画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/585506/44672c9c-4486-e060-4d08-089301cbcbad.png)
## ■入力画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/585506/4ea8fd22-6951-9009-932d-02b2c0bf3706.png)
## ■特徴
・会員登録不要、無料で使用・保存できる。
・http://memo.lomo.jp/ +[複雑なID」を入力して自分専用のメモ帳として利用できる

元記事を表示

Javascriptでいろいろな正星型図形(n芒星)を生成する

#仕組み

図形生成の仕組みは、[こちらのページの技術](https://mail.conifer.jp/csstest/css-circle-text.html)を応用したもの + 高校で習った三角関数。
そもそも六芒星をはじめとする星型図形には**どれだけ複雑なものであっても、線の本数と傾きは正多角形の時と変わらない**という法則がある。つまり、線の傾きと位置さえ調整してやれば、煩雑な多角形であっても生成可能なのである。
で、その線の位置と長さを求めるときに使うのが、いわゆるsin、cos、tanなのだ。

図にするとこんな感じ。
![1583417842156.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416995/7f0291ca-46e1-4ec5-694a-ae9a7b72a8db.jpeg)

赤線の部分がいわゆる「斜辺」と呼ばれるもの。斜辺の長さは50%=0.5で、赤線と赤線の間の角(中心角)は今回の場合5等分(赤い点=円の中心から接線に向けて伸びる直線、つまり半径なのだ)。こ

元記事を表示

ReactでマークダウンをHTMLに変換する

ReactでマークダウンをHTMLに変換する方法について記載

1.react-markdownをインストール

“`
npm install –save react-markdown
“`

2.以下のコードを記載

“`

import React,{Component} from ‘react’;
import ReactMarkdown from ‘react-markdown/with-html’;

export default class MarkdownSample extends React.Component {

constructor(props) {
super(props)
}

getHTMLfromMarkdown(){
let markdown =
‘# 見出し 1\n’ +
‘## 見出し 2\n’ +
‘### 見出し 3\n’ +
‘#### 見出し 4\n’ +

元記事を表示

TypeScriptでスクレイピングしてみよう

# 初めに
TypeScriptによるスクレピングの簡単な手法を紹介したいと思います。
記事のポイントはあくまでもTypeScriptの使用、高度なスクレピング技法の紹介ではありません。
## 前提条件
– ある程度Typescriptの文法が分かってること
– Node.jsの環境が整って、npmコマンド使えること
– グローバル環境にTypeScriptに入ってること
– 法に触れること、人に迷惑かけることをしないこと

# プロジェクト初期化

“`shell
mkdir [好きなディレクトリ] && cd [好きなディレクトリ]
“`
package.jsonとtsconfig.jsonの初期化

“`
npm init -y && tsc –init
“`
プロジェクトのフォルダ内にsrcフォルダを作ります。

“`
mkdir src
“`
tscofig.jsonのrootDirをsrcフォルダに指定します。

“`shell:tscofig.json


“rootDir”: “./src”, /* Specify the

元記事を表示

LIFFの新機能「Share Target Picker」を試してみた

つい先日、LINEのフロントエンドフレームワークの「LIFF」に新機能が追加されました。その名も「**Share Target Picker**」。どんな機能かというと、WebアプリからLINEの友達に対してメッセージを送ることができる機能です。つまり、「LINEアプリを立ち上げなくてもブラウザからメッセージを送る」という機能を実装することができます。詳しくはこちらのブログが参考になります。
[Share Target Pickerがリリースされ、LIFFアプリからのメッセージ送信が大幅に強化されました。](https://engineering.linecorp.com/ja/blog/liff-share-target-picker/)

というわけで今回はこの機能を試してみます。
# 今回作るもの
ブラウザから適当なメッセージを入力して誰かに送信するというものです。実際の動作は[こちら](https://target-share.netlify.com/)で確認できます。

※LIFFは本来はLINEアプリ上で動くように作られていますが、この機能に関しては、LINEアプリのver

元記事を表示

【JavaScript】canvasでビュー操作してみよう【canvas】

#はじめに
以前公開した記事の続編的な記事です。
canvasで、マウスイベント、リサイズイベントをハンドリングして、平行移動や拡大縮小をしてみましょう。
今回はcontext.setTransformを使ってみます。

#仕様
動作確認ブラウザはPC版のChromeのみ
ライブラリはjQueryのみ使用
ドラッグで平行移動、ホイールで拡大縮小する(拡大縮小はカーソル位置中心)
ブラウザのリサイズに対応する
ブラウザいっぱいにcanvasを描画する
#仕様のイメージ
###ドラッグによる平行移動
![maki_translate.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163605/9696a75a-0e61-8033-7440-61bcc406ba76.png)
###ホイールによる拡大縮小
![maki_scale.png](https://qiita-image

元記事を表示

processmdでマークダウンをjsonに変換する

#processmdとは?
マークダウン形式・YAML形式のファイルから、htmlタグを含むjson形式ファイルを生成するnpmパッケージです。
ブログなどの静的コンテンツを作成するのに便利です。

詳細はこちらで
https://github.com/tscanlin/processmd

#これが
“`md:test.md

title: イカ焼きおいしいです。
created_at: 2096-02-01
image: splatoon.jpg

# 見出し1

## 見出し2

がんばるぞい。
がんばるぞい。
がんばるぞい。
がんばるぞい。
がんばるぞい。
がんばるぞい。
がんばるぞい。
“`

#こうなる
“`json:test.json
{
“title”: “イカ焼きおいしいです。”,
“created_at”: “2096-02-01T00:00:00.000Z”,
“image”: “splatoon.jpg”,
“bodyContent”: “# 見出し1\n\n## 見出し2\n\nがんばるぞい。\nがんばるぞい。\nがんばるぞ

元記事を表示

[Vue.js] vue-momentで日付をフォーマットする

#インストール

“`bash:
npm install vue-moment
“`

#Vueプロジェクトにインポート
“`javascript:main.js
Vue.use(require(‘vue-moment’));
“`

#.vueファイルで使う
or演算子|の右辺でフォーマット形式を指定します。

“`javascript:App.vue
{{ new Date() }}
// 05 2020 19:38:33 GMT+0900 (日本標準時)

{{ new Date() | moment(“dddd, MMMM, Do, YYYY, h:mm:ss a”) }}
// Thursday, March, 5th, 2020, 7:38:33 pm

{{ new Date() | moment(“YYYY/MM/DD”) }}
// 2020/03/05
“`

#参考にしたサイト
vue-moment – npm
https://www.npmjs.com/package/vue-moment

元記事を表示

VuetifyでRedmineのダッシュボードを作成する時にテーマをこんな感じにすると便利かもというお話

[Vue.js](https://jp.vuejs.org/)と[Vuetify](https://vuetifyjs.com/ja/)を勉強中の8amjpです。

## はじめに

さて、私の職場ではRedmineが稼働してまして、さらにそのデータを見やすく加工したダッシュボードを作成して、大型ディスプレイに表示してるんですけど。
そのダッシュボード、今までは[Angular](https://angular.jp/)で作ってたんですが、Vue.jsも勉強したいしVuetifyでマテリアルデザインを満喫したいし……ということで、現在リプレースの真っ最中です。Vue.jsもたのしー!
その過程で覚えた小ネタをひとつ。

## テーマにカスタムカラーを追加する

Vuetifyとは、Vue.jsベースのフレームワークで、ダッシュボードみたいなWebアプリを作るのに最適なんですけど。
このVuetify、「テーマ」という機能を持っていて、これがRedmineのデータの表示にとても便利なんです。
具体的に言うと……
チケットの一覧なんかを表示する際、チケットのステータスやトラッカーの値によっ

元記事を表示

jest の toBe と toEqual の違いを比較

1時間ほどハマったのでメモを。

# toBe と toEqual の使い所

– number, string の比較ならどちらでも良さそう。
– object を比較する場合は、 toEqual 。

number, string
—–

どちらも期待通りの結果に。

“`typescript
it(‘number’, () => {
expect(1 + 1).toBe(2) // ok
expect(1 + 1).toEqual(2) // ok
})
“`

“`typescript
it(‘string’, () => {
expect(‘d’ + ‘b’).toBe(‘db’) // ok
expect(‘d’ + ‘b’).toEqual(‘db’) // ok
})
“`

object
—-

同じデータが入っていても toBe だと Fail します。

“`typescript
it(‘object’, () => {
const us

元記事を表示

HANSONTABLEのセル入力における日本語対応について

# HANSONTABLEの2バイト入力への対応

ハンズオンはブラウザ上に表形式のインターフェイスを提供するありがたい部位です。
これを使用するにあたり、日本特有である日本語入力時の不具合があり
かなりハマったので、備忘録として残しておきます。


まずはハンズオンテーブルとは・・
https://handsontable.com/

JavaScript data grid that looks
and feels like a spreadsheet.
Minimalistic, Excel-like grid component for web apps.
Available for pure JavaScript, React, Vue, and Angular.


## 問題点
そもそも英語圏の部品なので、日本のように全角半角がある場合の対処ができていない。
### 現象
ハンズオンで表示したテーブルのセル(テキスト)に対して、フォーカスを当てただけの状態で、IMEをON(日本語入力)した際、最初の1文字が入力されない。

| col1 |col2|col3

元記事を表示

jQuery UI Slider で、ハンドルの数を増減したい話

## 前書き
そもそも、[ここ](https://stackoverflow.com/questions/19348528/jquery-ui-slider-how-to-add-values)の回答を転記、加工して、動作を確認しただけです。
なぜ書き直したかといいますと、2013年の回答と、現在のバージョンが異なるから、
サンプルページが動作していなかったため、
そして、日本語での参考にできる記事がなかったため、検索性を考えて、転記しておこうということです。

ということなので、話はタイトルで分かったから、早くという人は[本家](https://stackoverflow.com/questions/19348528/jquery-ui-slider-how-to-add-values)からコピーしたほうが早いです。元のままでもちゃんと動きました。

もしくは、[本番](#本番)へどうぞ。

## 何がしたいか
[jQuery UIのSlider](https://jqueryui.com/slider/)という機能、ハンドル(値を持てる箇所)を複数指定する場合

“`js
$(‘

元記事を表示

OTHERカテゴリの最新記事