QRコードを作成する簡単なJavaScript(GoogleのAPIが提供されなくなったので)

Blog Admin
Blog Admin

投稿ごとにQRコードを表示することを画策していました。
なるべく簡単に作ってみようということで、公開APIを利用する方法を考えました。

ソースコード

JavaScript
QRコードを生成する

Googleが提供していた「Google Chart API」を使ってQRコードを作るJavaScriptを書いていました。
このほど、APIの提供が終わっていることが判明しました。
QR code API というAPIを使って、同様の結果を得ることができております。

GoogleのAPIでできていたことは、QR code API でもできています。

投稿表示時にURLをQRコード化

投稿を表示するときにJavaScriptを動かして、自分のURLをQRコードに変換して表示しようということです。
もう少しシステムぽい表現をすると、ページをロードするタイミングでURLを取得してQRコードを生成し、指定位置に表示するということです。

実際にやってみると以下です。

JavaScriptが実行可能な場合は、このページのQRコードを表示します。

JavaScriptが動く環境なら、QRコードが表示されるはずです。
少し遅れてくるかもしれません。

ソースコード

QRコードを表示できればひとまずは成功です。

自分でプログラムを書いたというわけでなく、APIにパラメーターを渡して、QRコードを作ってもらっています。
外部リソースは効率よく活用させてもらいますよ。
少しだけのJavaScriptの知識と、APIの仕様書を読む読解力があれば大丈夫です。

同じものでよろしければ、この投稿のコードをコピペして使ってください。(諸々の責任は負いかねます。)

実際に書いたコード

この投稿に書いているコードのご紹介です。
実装環境は以下です。

  • サーバー: Xserver(スタンダード)
  • CMS: WordPress
  • テーマ: Cocoon

特別なことはしていないつもりです。

HTMLとJavaScript

HTMLとJavaScriptを記述しました。
JavaScriptでHTMLを書き替える感じです。

HTML

本文中に以下を記述してあります。

<div id="QRCode">JavaScriptが実行可能な場合は、このページのQRコードを表示します。</div>

WordPressの実装では「カスタムHTML」に書くことになります。
「段落」に書いてしまうと、意図した動きにならないはずです。

JavaScript

今回の肝の部分です。
上のHTMLより下に書きます。
投稿編集画面に「カスタムJavaScript」などの専用フィールドがあれば、そこに書きます。

window.onload = function reWrite()
{
    var url = location.href ;
    var title = document.title ;
    document.getElementById('QRCode').innerHTML='<img class="alignnone" src="https://api.qrserver.com/v1/create-qr-code/?data=' + url + '&size=200x200&color=000022&ecc=M&margin=10" alt="' + title + ' のQRコード" title="「' + title + '」へのリンク" />' ;
}

「カスタムHTML」として本文中への設置も可能です。
その際には、以下のようにscriptタグで囲ってください。

<script type="text/javascript">
/* ここに上記のコードを記述 */
</script>

「段落」に書かないことと、上のHTMLより下に書くことは確実に。

書いたコードの説明

既述したコードの内容に関してです。
自分で整理するためという理由もありまして。
備忘録です。

やっていることの概要は以下です。

  • HTMLパートでdiv要素にidを付けておき器を用意
  • 画面ロードと同時にQRコードをAPIで生成
  • 生成したQRコードのimgで器を書き換え

HTML部分

div要素に「QRCode」というidを割り当てておきます。

また、あらかじめテキストを書いておきます。
このテキストは、JavaScriptが動けばQRコードの画像で上書きされますが、JavaScriptが無効な場合には、そのまま表示されることになります。

URLとタイトル

表示している記事のURLタイトルをあらかじめ取得します。
それぞれ変数に格納しておいて、後で使います。

タイトルがhead内にtitleタグで定義されていることを前提としています。

innerHTML

HTMLを書き換えます。
id(「QRCode」という名称で指定済み)で対象要素を指定して、イコールの右側を直接代入します。

当たり前ですが、HTMLでダブルクォーテーションを使うので、JavaScriptではシングルクォーテーションを使いましょう

QR code API のパラメーター

今回記述したコードで使っているAPI用パラメーターは以下です。
URL変数として設定するものです。

  • data: コード化する文字列(必須)
  • size: 全体サイズ(ピクセル値)
  • color: ドットの色(RGB指定)
  • ecc: エラー回復レベル(L、M、Q、Hから選択)
  • margin: 余白

これら以外にもパラメーターがあります。
文字コードを指定できたり、背景色を指定できたり、画像形式を指定で着たりします。

APIの仕様など

QR code API では、QRコードの作成とQR画像の読み取りが可能です。
今回はコードの生成のAPIのみを利用しています。
公式文書は以下です。

便利なAPIを提供してくれていてありがたいです。


当サイトのページにも反映済みです。

この投稿を書いたのは・・・
Blog Admin

ガジェットが大好きで、ほぼ毎月何かしら調達しております。
無駄遣い扱いされたくないのと、何かの役に立つかと思い、記録を書くことにしたのでした。

お出かけのときには、スマホを複数台とタブレットとパソコンを持ち歩きます。
両手首にはスマートウォッチです。
こんなスタイルで生活している中での備忘録を書いています。

「Blog Admin」をフォローしてみる
ブログ関連
「Blog Admin」をフォローしてみる

ご意見やご感想などお聞かせください! コメント機能です。

タイトルとURLをコピーしました