● トラブルシューティング・よくある質問

1.文字化けします。
Classic ASPの場合には、「Response.Charset = "Shift_JIS"」など明示的に文字コードを指定してください。また、メタタグ(<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">)を挿入することで解決しないか、確認してください。

なお、滅多にないとは思いますが、難読化前には文字化けしていないことを今一度御確認ください。

2. 特定のページで、レイアウトが崩れます。
いくつかの条件が重なると、レイアウトが崩れることがあります。それは仕様ですが、解決方法はあります。

まず、レイアウトが崩れるケースの条件ですが、
  • プロテクトコード(どこでもSHTMLで作成した右クリック禁止などのJavaScript)以外のJSファイルを使っている場合で、
  • かつ、JSファイル内で「document.writeメソッドを使っている場合で、
  • かつ、そのdocument.writeメソッドが実行されるタイミングがページ本体のロード完了前である場合です。(ボタンをクリックしてサブウインドウが開く場合などにdocument.writeメソッドを使用している場合は関係がありません。)
この場合、JSファイル内でdocument.writeされているソースは、元々のレイアウトにかかわらず、ページの最下部に表示されます(Internet Explorerの場合。Firefoxでは問題ありません)。

getEncrypt_shtml関数を呼び出すのを複数回に分けていただくことです。問題のJSファイルを含むソースを境界にしてソースを分割して難読化させるようにします。例を挙げて説明しますと、 shtml_logo.jsというJSファイル内にて、Flashファイル表示用のHTMLソース(objectタグやembedタグ)をdocument.writeしている場合を考えてみます。

体験版及び製品版のfaqフォルダー内のサブフォルダー=logo内のshtml_logo_fail.aspをご覧ください。


shtml_logo.jsのソース:


この場合、本来は、「あいうえお→SHTMLのロゴ(flash)→かきくけこ」と表示されてほしいのに、Internet Explorerの場合には、「あいうえお→かきくけこ→SHTMLのロゴ(flash)」と表示されてしまいます。改善方法を下記に示します。



このように、ソースを分割し、その都度、getEncrypt_shtml関数の戻り値をResponse.writeしていただければ、「あいうえお→SHTMLのロゴ(flash)→かきくけこ」と期待通りに表示されるようになります。

(問題を起こすソース部分が例えば、Google AdSenseのような、他社のスクリプトである場合には、これを難読化しなければならない理由は多くの場合ないでしょうし、むしろするべきでない場合も多いでしょうから、単にこの部分は平文のままprintしていただくようにしても、レイアウト崩れの問題は解決します。)

なお、JSファイル内でdocument.writeするのではなく、HTML本体内でdocument.writeしている場合には、レイアウトの崩れは、この対策をしていない場合でも生じません


3. 「domin error」というアラートが表示されます。
サーバサイドSHTML(体験版/製品版とも)は、ご登録していただいたサーバでのみ動作するようにしてあります。サーバのドメイン名をJavaScriptでチェックさせていただいています。

サブドメインの違いは問いませんので、http://www.example.com でご登録いただいた場合には、test.example.comやlocalhost.example.comなどをテストサーバ名として運用していただければと存じます。つまり、お手数ですが、テストサーバで動作させる場合には、テストサーバのサーバ名を一時的にでも、hostsファイルやhttpd-vhosts.confを調整することで、ご登録のサーバ名(ドメイン名)と一致化させるようにしてください。

テストサーバの名称をどうしても調整できない場合には、サポートにお問い合わせください。


HTMLソース難読化用ASPライブラリ
「サーバサイドSHTML for ASP」
© 株式会社プランセスお問い合わせ