dポイントプレゼントキャンペーン実施中!

ActiveX コントロールのアクティブ化に関して
外部jsファイルを読み込んで対処する方法はわかるのですが
外部にファイルを作りたくないとクライアントに言われました。

この場合どのように記述すればよいのでしょうか?

よろしくお願いいたします。

A 回答 (1件)

本当に困ったクライアントさんですね。



「JPEG も GIF も そして SWF もみんな外部ファイルです。
外部がいやなら,HTMLだけのページにしましょうか!?」

などと,言いたくなりますね。
JS でも何でも同じなんですけどね…。
お気の毒に思います。

----------------------------------

いろいろ調べたり,
考えたり(SWF 内に JavaScript を書いておいて ActionScript から実行させるなど)
してみましたが,
良い方法がわかりませんし,思いつきません。



☆ そこで代案(新案)です。

外部 .js ファイルは,外部であればいいわけですから,
.js ファイルは質問者さまの(または質問者さまの会社の)サーバやサイト内に置いて,
それをクライアントのサイトのページから参照させてあげてはいかがでしょうか?
簡単楽々な方法を次に書きます。


このこととは基本的に別問題ですが,
JavaScript に関して,ここ↓のページを参考に考えます。

「ActiveX コントロール アクティブ化の裏ワザ」
http://qpon.quu.cc/activ/
 ~引用~
>> フルパスで書けば、
>> すべてのページから1つのファイルを
>> 共用できるようになります。
     … 略 …
>> 最初のタグだけ外部ファイルに書かせれば、
>> 後はHTML文のままでもよさそうです。



~ 作成例 (あくまでも実験です)~ ~ ~

幅 400px,高さ 300px の 「myFlash.swf」 という名の SWF を作成し,
その SWF と同じフォルダ階層に HTML を置きます。
その HTML のコードを次のようにすれば,
「このコントロールをアクティブ化…」
の表示が出ません。

-------------------------------
<HTML>
<HEAD>
<TITLE>myFlash</TITLE>
</HEAD>
<BODY bgcolor="#FFFFFF">

<script type="text/javascript" src="http://qpon.quu.cc/activ/activ.js"></script>
<script type="text/javascript">
activ('<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" WIDTH="400" HEIGHT="300">');
</script>

<PARAM NAME=movie VALUE="myFlash.swf">
<PARAM NAME=quality VALUE=high>
<PARAM NAME=bgcolor VALUE=#FFFFFF>
<EMBED src="myFlash.swf" quality=high bgcolor=#FFFFFF WIDTH=400 HEIGHT=300 TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/ind …
</OBJECT>
</BODY>
</HTML>
-------------------------------

※ コピペすると http:// で始まる自動リンクがかかった
  URL 部分に,変な文字が入る場合があります。
  コピペで使用される場合は,
  その 変な文字(見えません)を削除して使ってください。

※ これはあくまでも実験です。
  本番では上記サイトさま の JS を
  直参照して使うなどということはしないでください。
  上記サイトさま,
  無断実験使用すみません m(_ _;)m 感謝!!



上記コードの内容は,わかりますでしょうか?

<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" WIDTH=400 HEIGHT=300>

であるべきところを,

<script type="text/javascript" src="http://qpon.quu.cc/activ/activ.js"></script>
<script type="text/javascript">
activ('<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" WIDTH="400" HEIGHT="300">');
</script>

に変えただけです。ただそれだけ。


本番では,「activ.js」を質問者さまのサーバに置いてあげて,
http://qpon.quu.cc/activ/activ.js
の部分を,そのURLに変えれば良いだけです。


http://qpon.quu.cc/activ/ さんの
.js ファイルを借りるだけでなく,
SWF と .js ファイルをそれぞれ別々のサーバにアップして実験もしてみましたが,
うまく行きましたよ。
クロスドメイン問題も大丈夫なようです。

ついでに,
EMBED タグが JS の中ではなく HTML 内にあるため,
JavaScript が無効なブラウザでも,一応 Flash は表示はされるという副産物付きです。
また 質問者さまのサーバがダウンしているときでも,同じく,
一応 Flash は表示はされるはずです。


「activ.js」の中身も非常にシンプル。

---------------------
function activ(ww){
ww+="\n";
document.write(ww);
}
---------------------

たったこれだけです。
ファイル容量もたった 52 バイト 。
それにすんごい楽ちんです。


52 バイト分のサーバ使用量は,
サービスして差し上げても良いですが,
何でしたら,そのわがままクライアントさんに,
別途請求して差し上てはいかがでしょうか。
1000円/月 くらいで(爆)。



=/=/= 別法 =/=/=/=/=/=/=/=/=/=/=

上の 「activ.js」 ですが,
中身はそのままで拡張子を .swf に変え, 「activ.swf」 にします。
そして,
                   ココを変える↓
<script type="text/javascript" src="activ.swf"></script>
<script type="text/javascript">
activ('<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" WIDTH="400" HEIGHT="300">');
</script>

これでも行けますよ。

なぜ,外部JS ファイルがダメで,外部の Flash(.swf) が良いと言っているのか,
その理由がよくわかりませんが,
外部JS がダメなのであれば,
勝手に拡張子のみSWF変えても良いです。
何でしたら .as でも .jpg でも…
ブラウザは拡張子なんか気にしていませんから。
    • good
    • 0
この回答へのお礼

いろいろとばたばたしてしまって
お礼が遅くなりました。

外部ファイルがダメだなんて、意味がわかりません。
本当に困っていました。

結局アクティブ化しないまま(普通にHTMLに記述)
進んでしまいました。う~ん・・・

sassakun様、とてもご丁寧に回答いただきありがとうございました。
今後の参考にさせていただきます!
重ねて、お礼が遅くなり申し訳ありませんでした。

お礼日時:2006/11/09 14:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!