SQLの窓

2014年09月27日


VBScript : JavaScript のライブラリを呼び出して、Base64 エンコードを行う

世の中には、VBScript のサンプルよりはるかに JavaScriptで動作するものがたくさんあるので、VBScript より呼び出して利用します。

Javascript base64 - Javascript tutorial with example source code にあるソースコードを base64.js としてあらかじめ作成しておきます。そのファイルを、Google ドライブの共有で外部から参照可能にしておいて使用しています。

このサンプルは、WEB 関連の用途を前提としているので、日本語は UTF-8 に変換されたものが Base64 にエンコードされますので注意して下さい。
<JOB>
<SCRIPT language="JavaScript" src="https://e71762ff0667a838154428843724525602513494.googledrive.com/host/0B9Jymqpro6gSbTZnNHVOODFnTE0/base64.js"></SCRIPT>
<SCRIPT language=VBScript>

' 日本語は、UTF-8 でエンコードされた後に base64 でエンコードされます

str = ""
For I = 0 to 127
	str = str & Chr(I)
Next


strPhp = "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKiss"
strPhp = strPhp & "LS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJ"
strPhp = strPhp & "TVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eH"
strPhp = strPhp & "l6e3x9fn8="
if Base64.encode(str) = strPhp then
	MsgBox("一致しました")
end if

str = "VBScriptにはありませんが、JavaScriptにはたくさんのライブラリがあります!"
MsgBox(Base64.encode(str))

' **********************************************************
' PHP のコード
' **********************************************************
'$str = "";
'for( $i = 0; $i < 128; $i++ ) {
'	$str .= chr($i);
'}
'$str = base64_encode($str);
'print $str;
'

</SCRIPT>
</JOB>



タグ:Base64
posted by lightbox at 2014-09-27 22:37 | VBS + JavaScript | このブログの読者になる | 更新情報をチェックする

2011年04月08日


JavaScript のライブラリを VBScript で使う場合の注意点

まず、「何で動くVBSCript か」と言う事が重要になって、それによって対処方法が変わっていきます。通常、大きく分けて、VBScript を使うの土俵が3種類あるからです。

1) WSH
2) HTA
3) ASP

1) は、PCのバッチ処理用で、2) は、HTML アプリケーションで IE が PC 用に特化されたようなもので、3) は IIS で動くサーバーサイドスクリプトです。

2) の場合は、元々が IE なので、JavaScript のライブラリを使う事は特に問題は出無いと思います。ただ、VBScript から呼び出すのが目的なので、右から左とは行かないかもしれませんが。

1) の場合、拡張子が .vbs の場合は ASP と同じで、スクリプト要素と言うような外部ライブラリを読み込む手段が無いので、別に関数を作ってやる必要があります。( ASP は、スクリプト要素はありますが、完全に外部のライブラリを読めません )

で、1) の場合で 拡張子が .wsf の場合は、スクリプト要素が使えるので、HTML 上で書くように定義できます。ただ、VBScript の呼び出し位置よりソースの前方で定義する必要があるみたいですが。

つまり、1) の .wsf と 2) の場合はスクリプト要素を使うのですが、IE 専用になるので、language="JavaScript" という属性を付けてやって下さい。さらに、直接呼び出さずに JavaScript のラップ関数を作成し、受け渡しや戻り値は文字列にすると問題が出にくいと思います。

その場合 1) に起こる最も大きな問題

それは、ライブラリが window オブジェクト等の ブラウザ固有のオブジェクトを使っていた場合です。その場合は代替えを用意する必要があります。単に window. の下に変数を定義している場合は、グローバル変数に変更してやると動くかもしれません

関連する記事

VBScript : Twitter API を呼び出して投稿する


スクリプト要素が書けない場合

昔、ASP でテストしたのが ASP 用 require 関数 ですが、クライアントの処理(WSH)ならば、Msxml2.ServerXMLHTTP を通常は使います。Msxml2.ServerXMLHTTP では、タイムアウトが設定できますし、昔に比べて最近は問題無く動作します。

Msxml2.XMLHTTP でも動きますが、タイムアウトは変更できませんし、IE の設定でドメイン間のアクセスを可能にしておかないと、クッキーを取り出す必要のあるコミュニーケーシュン処理を行うと、「アクセス拒否」されるので注意して下さい。

あと、さらにこの場合は js ライブラリ側を UTF-8 にしてやると問題が起きません( .js は静的ファイルなので、デフォルトで XMLHTTPからは UTF-8 扱い )

.js の キャラクタセットを、サーバーや cgi で操作するのならば、SHIFT_JIS でも問題は出ませんが、混乱の元なので UTF-8 で統一するといいと思います。どうしてもメッセージ等を日本語で入れたい場合は、Unicode のコードによる記述方法を用いると良いです。

※ 以下は alert("日本語表示") と同等です。
<script type='text/javascript'>
function scriptTest() {
	alert( "\u65e5\u672c\u8a9e\u8868\u793a" )
}
</script>



posted by lightbox at 2011-04-08 16:57 | VBS + JavaScript | このブログの読者になる | 更新情報をチェックする

2009年06月23日


WSH : VBScript から JavaScript の呼び出し

.wsf で、SCRIPT タグを使って VBScript と JavaScript を混在させる場合、呼ばれるほうは先に定義される必要があるようです。

つまり、以下はエラーになります。
<JOB>

<SCRIPT language=VBScript>

js()

</SCRIPT>

<SCRIPT language=JScript>

function js() {
	Wscript.Echo( "JS" )
}

</SCRIPT>

</JOB>


しかし、以下は正しく実行されます。逆の場合でも同じでした
<JOB>

<SCRIPT language=JScript>

function js() {
	Wscript.Echo( "JS" )
}

</SCRIPT>

<SCRIPT language=VBScript>

js()

</SCRIPT>

</JOB>


で、結局 encodeURIComponent を実行したかったのです
<JOB>

<SCRIPT language=JScript>

function js(str) {

	return encodeURIComponent( str );

}

</SCRIPT>

<SCRIPT language=VBScript>

MsgBox js("日本語をURLエンコードする")

</SCRIPT>

</JOB>





タグ:レア
posted by lightbox at 2009-06-23 18:06 | VBS + JavaScript | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します


Windows
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
PHP正規表現チェッカー
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり