- ベストアンサー
ActiveX コントロールのアクティブ化
ActiveX コントロールのアクティブ化に関して 外部jsファイルを読み込んで対処する方法はわかるのですが 外部にファイルを作りたくないとクライアントに言われました。 この場合どのように記述すればよいのでしょうか? よろしくお願いいたします。
- みんなの回答 (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/index.cgi?P1_Prod_Version=ShockwaveFlash"></EMBED> </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 でも… ブラウザは拡張子なんか気にしていませんから。
お礼
いろいろとばたばたしてしまって お礼が遅くなりました。 外部ファイルがダメだなんて、意味がわかりません。 本当に困っていました。 結局アクティブ化しないまま(普通にHTMLに記述) 進んでしまいました。う~ん・・・ sassakun様、とてもご丁寧に回答いただきありがとうございました。 今後の参考にさせていただきます! 重ねて、お礼が遅くなり申し訳ありませんでした。