QR コード生成 – 2
次のコードを html 内に追加することで,html のを参照する QR コードを表示できます.
<script src ="//itl.mydns.jp/_lib/js/i_lib/2022.01/c_qr_img.js"> </script>
<script> call_qr_img_href() ; </script>
SiteMix ではうまく動作しなくなってしまいました.
以下は,以前の情報です.考え方などはそのまま使えるため残しています.
以前設定した「QR コード生成」を,もう少し汎用的に.
先ず,PHP が利用できるフリーのサーバを用意.
SiteMix を利用.
//itools.hp2.jp として登録.
「QRcode Perl CGI & PHP scripts ver. 0.50」をサーバーに転送.
c_qr_img.js を転送.
これを利用したページ.
//itools.hp2.jp/Test/qr/index.html
次の様なスクリプトを HTML の表示したいところに挿入する.
<script src =”/Test/qr/c_qr_img.js” > </script>
<script> call_qr_img_href() ; </script>
<script> call_qr_img_free(“http://itl.mydns.jp”) ; </script>
src=”/Test/qr/c_qr_img.js” の部分は,”//itools.hp2.jp/Test/qr/c_qr_img.js” でテスト可能.
最終的には c_qr_img.js の次の所を,利用環境に合わせて編集してください.
var domain = “//itools.hp2.jp” ;
var qr_php = domain + “/Test/qr/qr_img/php/qr_img.php” ;
うまく動作しない時のチェック方法
QR コードが表示されない場合
JavaScript 内の qr_img.php の呼び出しが間違っている可能性があります.
ブラウザによっては「要素を調査」などで php を呼び出している部分を確認できます.
何も表示されない場合
JavaScript 自体をうまく呼び出せてない可能性があります.
html 内の呼び出し部分を確認してください.
c_qr_img.js
function call_qr_img_php (data,is_draw_data) { var domain = "//itools.hp2.jp" ; var qr_php = domain + "/Test/qr/qr_img/php/qr_img.php" ; { var qr_img = "<img src='" + qr_php + "?d=" + data + "'>" ; document.write (qr_img) ; } if (is_draw_data) { document.write ("<br/>") ; document.write (data) ; } } function call_qr_img_href () { var href = location.href ; call_qr_img_php (href,true) ; } function call_qr_img_free (freeText) { call_qr_img_php (freeText,true) ; }
2018/06/29 追記
https に移行した関係で,SiteMix ではうまく動作しなくなってます.
2021/07/14 qr_img.php を呼出す JavaScript を修正
Win10 1709 その後
内臓のディスク容量が少ないので,「ジャンクション」を利用して D にしていた.
C:\Users\Public\Documents>dir /a ドライブ C のボリューム ラベルは OS です ボリューム シリアル番号は 9899-964A です C:\Users\Public\Documents のディレクトリ 2018/01/21 13:56 <DIR> . 2018/01/21 13:56 <DIR> .. 2016/02/11 01:29 <JUNCTION> Asus [C:\Public\Document\Asus] 2017/09/29 20:52 278 desktop.ini 2016/02/11 01:49 <JUNCTION> Dropbox [C:\Public\Document\Dropbox] 2016/12/22 11:01 <DIR> images 2016/02/11 01:27 <JUNCTION> M... [C:\Public\Document\M...] 2016/02/11 01:16 <JUNCTION> M... [C:\Public\Document\M...] 2015/07/10 18:55 <JUNCTION> My Music [C:\Users\Public\Music] 2015/07/10 18:55 <JUNCTION> My Pictures [C:\Users\Public\Pictures] 2015/07/10 18:55 <JUNCTION> My Videos [C:\Users\Public\Videos] 2018/01/21 14:20 <DIR> Temp 2016/02/11 01:26 <JUNCTION> Tools [C:\Public\Document\Tools] 2016/02/20 16:28 0 VC_Path.BAK 2016/02/20 16:31 2,563 VC_Path.txt 2016/12/21 23:45 168 web.config 2017/02/17 22:12 <DIR> w_Conf 4 個のファイル 3,009 バイト 13 個のディレクトリ 3,028,328,448 バイトの空き領域
* 一部ディレクトリ名などは編集済み.
JUNCTION という情報は残っているようではあるが,D ドライブを正しく指していない.
確か,1607 でも一部(%Temp% 直下のジャンクション)がうまく引き継がれなかった.
ここが引き継げないのはわからなくもないが,Public\Documents 以下は何とかできないものか?
template の利用
inline tstring x_To_tstring (const i_64 v) { return ::i64tot (v,10) ; } inline tstring x_To_tstring (const u_64 v) { return ::u64tot (v,10) ; } inline tstring x_To_tstring (const long v) { return ::i64tot (v,10) ; } inline tstring x_To_tstring (const int v) { return ::i64tot (v,10) ; } inline tstring x_To_tstring (const float v) { return ::To_tstring_rz (v,0, 7) ; } inline tstring x_To_tstring (const double v) { return ::To_tstring_rz (v,0,15) ; } template <class V2> tstring V2_To_tstring(const V2& vt,LPCTSTR sp=_T(" ")) { tstring str = ::x_To_tstring(vt.x) + sp ; str+= ::x_To_tstring(vt.y) + sp ; return str ; } template <class V2> tstring V2_To_tstring(const std::vector<V2>& va,LPCTSTR sp2=_T("\t"),LPCTSTR sp=_T("\r\n")) { tstring str ; for (size_t index=0 ; index<va.size() ; index++) { str += ::V2_To_tstring<V2>(va[index],sp2) + sp ; } return str ; }
次の様にすると, tstring pt_str = ::V2_To_tstring(pt2) ; C:\...\T_SplVw.cpp(99) : error C2667: 'V2_To_tstring' : 2 個のオーバーロード関数があいまいで最適な変換ができません。 C:\...\T_SplVw.cpp(99) : error C2668: 'V2_To_tstring' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照)
呼出し方法を忘れるので…
Vl2A pt2 ;
tstring pt_str = ::V2_To_tstring<Vl2>(pt2) ;
他にも,
::V2_To_tstring<Vd2>(::ToVd2A(tuvs)) ;