• ベストアンサー

困っています!ホームページにWindowsMediaPlayerへのリンクを張る際の質問です。

ホームページに、ボタンをクリックするとwmvファイルを開くようなページを作っています。 このとき、開くWindowsMediaPlayerのサイズを指定したいのですが、どのサイトを見ても、objectタグでページに動画を貼り付ける紹介ばかりで、リンク先のサイズ指定の仕方がどうしてもわかりません。 画像ならjavascriptでサイズ指定できるようなのですが、動画のサイズを指定するにはどうしたらよいのでしょうか? ちなみに、tableで画像を並べて、各自クリックするとそれぞれの動画にリンクするようにしています。 どなたか教えてください! よろしくお願いします!

質問者が選んだベストアンサー

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.8

ご苦労様です。やりとりが長くなってきました。 後は、サンプルに示したソースの命令について、 javascriptのリファレンス本やサイトで調べて見てください。 そこで分からない事があったら、 javascriptのカテゴリーで再度質問の投稿をして下さい。 参考になるサイトを、いくつか紹介しておきます。 まずは、ここから http://www.tohoho-web.com/js/index.htm だんだん難しくなっていきます http://javascriptist.net/docs/js_ref_ext.html http://www.scollabo.com/banban/java/index.html http://f32.aaa.livedoor.jp/~azusa/?t=js http://wiki.paulownia.jp/javascript http://www.atmarkit.co.jp/fdotnet/ajaxjs/ajaxjs01/ajaxjs01_01.html

chomechobi
質問者

お礼

はい! だいぶいいところまで来てますので、調べてみてみます! yyr446さん、長々とお付き合いいただいて、本当にどうもありがとうございました! ご親切に教えていただいて、助かりました!

その他の回答 (7)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.7

親でデバッグする時は alert(e); alert(e.nodeName); alert(e.tagName); alert(e.innerHTML); ですね。(訂正)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.6

"./wmptest2.htm"の部分を"wplayer.html"と変えてみたのですが、間違ってますか? ==>間違っていません。 さて、デバッグの方法ですが、子HTMLのjavascriptで、 wplayer.URL=window.opener.e.getAttribute("href"); の前に alert(window.opener.e); alert(window.opener.e.nodeName); alert(window.opener.e.tagName); alert(window.opener.e.innerHTML); とかを入れてeが何を参照しているのか調べてみてください。 (※私のサンプルは<a href="">xxx</a>のタグを想定しています。) 子のHTMLに <body onload="playstart();">はありますよね。 全てundefineなら、親の方で正しくセットされてないと言う事です。 親のswfplay2()の win=window.open("./wmptest2.htm","Player",size); の直前に alert(window.opener.e); alert(window.opener.e.nodeName); alert(window.opener.e.tagName); alert(window.opener.e.innerHTML); を入れて確かめてみましょう。 それから、親の方ではeはグローバル変数になってないとだめです。 関数の中でvar e = .....とかしたらだめです。 それから'event'というのはキーワード(window.event)です。 他の名前にしちゃだめです。

chomechobi
質問者

補足

やってみました! デバッグをやるのも初めてなので、方法が間違っていたらすいません… まず子のほうに入れてみて、子だけをブラウザで見たところ、ブラウザの左下に出た警告マーク(!)をクリックしたら、“"window.opner.w"はNullまたはオブジェクトではありません。” と出ました。 そのまま親をブラウザで確認して、クリックしたら、こちらも警告が出て、(警告だけ画面の真ん中に小さく出てくるやつです)“object HTMLImageElement”と出ました。 子のほうに問題があるのでしょうか? ちなみにeやeventは、教えていただいたソースのまま、特に変えてはいません。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.5

yyr446です。返答が遅くなりました。お望みの機能がほぼ実現できたと思います。  リンクをクリックすると指定されたサイズで子Windowを開き、その中で再生します。別のリンクをクリックするとサイズが変わって切り替わります。  子Windowのhtmlの中に予め「WindowsMediaPlayer」オブジェクトを埋め込み、子Windowのオンロードイベントで親Windowのパラメータ(コンテンツURLと表示サイズ)を取得します。  親Windowはリンクのクリックイベントで子Windowを開きます。すでに開かれていたらいったん閉じるようにしています。 参考URLでご確認下さい。WindowsXP/IE7.0/WindowsMediaPlayer9で確認しました。 (親のソース) <!DOCTYPE> <html> <head> <title>oya</title> <script type="text/javascript" charset="utf-8"> <!-- var e; var w; var h; var win; function swfplay2(width,height,eve){ if (win != null && win != undefined) { win.close(); } w = width; h = height; var x=w+20; var y=h+80; var size="width=" + x + ",height=" + y +",resizable=yes"; e = eve.target || eve.srcElement; win=window.open("./wmptest2.htm","Player",size); // return false; } // --> </script> </head> <body> <h2>Window Media Player</h2> <p>リサイズして別ウィンドウに表示 by OBJECT <ol>Contents <li><a href="./test.wma" onclick="swfplay2(300,200,event);return false;">TEST(300×200)</a></li> <li><a href="./test.wma" onclick="swfplay2(640,480,event);return false;">TEST(640×480)</a></li> <li><a href="./test2.wma" onclick="swfplay2(300,200,event);return false;">TEST2(300×200)</a></li> <li><a href="./test2.wma" onclick="swfplay2(640,480,event);return false;">TEST2(640×480)</a></li> </ol> </p> <hr /> <p>ローカルのプレーヤー起動 <ul>Contents <li><a href="./test.wma">TEST</a></li> <li><a href="./test2.wma">TEST2</a></li> </ul> </p> </body> </html> (子のソース) <!DOCTYPE> <html> <head> <title>oya</title> <script type="text/javascript" charset="utf-8"> <!-- function playstart(){ p_w = window.opener.w; p_h = window.opener.h; document.getElementById("wplayer").setAttribute("width",p_w); document.getElementById("wplayer").setAttribute("height",p_h); wplayer.URL=window.opener.e.getAttribute("href"); } // --> </script> </head> <body onload="playstart();"> <object id="wplayer" width="300" height="200" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"> <parm id="parm1" name="autoStart" value="True"/> </object> </body> </html>

chomechobi
質問者

補足

ありがとうございます!ほんとにほぼ望み通りです! なるほど子Windowの中にplayerを埋め込むのですね! やってみたのですが、なぜか肝心の動画が流れません… 子Windowは開くのですが、エラーが出てしまいます。 エラーの内容としては“型が一致しません”だそうです。 私は子Windowをwplayer.htmlと名前をつけて、同階層に保存しました。 なので、 win=window.open("./wmptest2.htm","Player",size); の記述の"./wmptest2.htm"の部分を"wplayer.html"と変えてみたのですが、間違ってますか? エラーの“型が一致しません”の下には“wplayer.html”の“ライン:13”とも出ています。 ちなみに“wplayer.html”13行目はwplayer.URL=window.opener.e.getAttribute("href"); です。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.4

>>やっぱりtd内に貼り付けるのではなく、別ウィンドウでコンテンツのサイズのプレイヤーを出したいのです。<< うーん?おやりになりたい事がわからなくなりました。 そもそも<object>でWindowsMediaPlayerをページに埋め込んだりして操作しなくても、 <a href="hoge.wmv">hoge</a> でhogeをクリックすると、別ウィンドウで「WindowsMediaPlayer」 が開き、リンク先のコンテンツがそのコンテンツのサイズに合ったった画面サイズで再生されますよ。 少なくとも私のPC(WindowsXP/IE7.0/WindowsMediaPlayer9)ではそうです。 これだとFireFoxでも当然だいじょうぶです。 (何かブラウザーのプラグインをインストールしたかなあ...)

chomechobi
質問者

補足

説明がわかりづらくてすいません… おっしゃっている通りaタグリンクですと、別ウィンドウで「WindowsMediaPlayer」は開くのですが、その画面サイズが私のPCではフル画面で出てしまうんです。 なのでそのサイズと座標を指定できればと思ったのですが、yyr446さんのはコンテンツのサイズにきちんと合って出るんですか? 配信する側からは指定ってできないものなのでしょうか?

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

yyr446です。暇があったので、ライブラリーやCSSを使わずJavascriptだけで作って見ました。(もちろんIEのみで動作します)ご参考にどうぞ 他にもやり方はいろいろあるはずです。IE7.0で動作確認しました。 <TD>要素内にある<a>要素のリンクをクリックすると、リンク先がTD内のWindowsMediaPlayerで再生されます。widthとheightも指定できるようにしたつもりだったのですが、結局、再生が始まるとコンテンツのサイズに自動的に調整されてしまいました。 そもそも、WindowsMediaPlayerについて私もまだよくわかっていません。 (ソース) <head> <title>Window Media Player Page</title> <script type="text/javascript" charset="utf-8"> <!-- function swfplay(w,h){ var wmp_area = document.createElement("div"); wmp_area.id="Warea"; if(document.getElementById("Warea")){ var childObj= document.getElementById("Warea").parentNode.lastChild; document.getElementById("Warea").parentNode.removeChild(childObj); } wmp_area.innerHTML='<object id="wplayer" width="' + w + '" height="' + h + '" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">'; wmp_area.innerHTML+='<parm id="parm1" name="autoStart" value="True"/>'; wmp_area.innerHTML+='</object>'; event.srcElement.parentNode.appendChild(wmp_area); wplayer.URL = event.srcElement.getAttribute("href"); } // --> </script> </head> <body> <p>Window Media Player</p> <table> <tbody> <tr><th>content</th></tr> </tbody> <tbody> <tr> <td><a href="./test.wma" onclick="swfplay(300,200);return false;">TEST(300×200)</a></td> </tr> <tr> <td><a href="./test2.wma" onclick="swfplay(200,200);return false;">TEST2(200×200)</a></td> </tr> <tr> <td><a href="./test.wma" onclick="swfplay(640,480);return false;">TEST(640×480)</a></td> </tr> </tbody> </table> </body>

chomechobi
質問者

お礼

yyr446さん、ソースありがとうございます! 早速引用させて頂いたのですが、やっぱりtd内に貼り付けるのではなく、別ウィンドウでコンテンツのサイズのプレイヤーを出したいのです。 こちらのソースをアレンジできればと解読を試みたのですが、私の知識では及ばず…まだ研究してみようと思います。 またお時間あればアドバイスいただけると助かります!

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

「テーブルに配置したコンテンツのリンクをクリックすると、そこに WindowsMediaPlayerを標示して、再生させたい」 という事ですか? <img>タグで画像を表示するのとは根本的に違いますよ。 WindowsMediaPlayerの<object>タグをページのあちこちに複数したりしませんよ。(してもいいけどまったく冗長です。) やり方を説明してもよいのですが、まずお聞きします。 Dreamweaver使用との事ですが、 javascriptを作れますか? -(特にDOMってわかりますか?) css(スタイルシート)って理解できますか? javascriptのライブラリーって聞いたことあります?

chomechobi
質問者

補足

やっぱjavascriptですか… 少々かじった程度でライブラリーは聞いたことないです。 人様のソースをコピペさせて頂いたくらいですね。 同じように、画像にリンクを貼り付けてサイズを指定した別ウィンドウで開くというのをやったことがあります。 ええと…今回は動画なんですが、テーブルで画像を配置して、それぞれクリックするとMediaPlayerが開いて関連の動画が流れる、という風にしたいのです。 aタグで動画自体は流れるようにはなっているのですが、動画のサイズは小さいのに対し、プレイヤーがフルスクリーンで出てしまうので動画にフィットしているほうがきれいかなと… 説明伝わりづらくてすいません。 あとcssはわかります!

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

OBJECT 要素の height 属性と width 属性でしていできませんか? <OBJECT ID="Player" height="200" width="300" CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"> <PARAM name="autoStart" value="True"> </OBJECT> WindowsMediaPlayerのコントロールについては、MSDNの http://msdn.microsoft.com/ja-jp/library/cc392567.aspx が参考になります。

chomechobi
質問者

補足

早速の回答ありがとうございました。 obuject要素ですが、どこに入れるのですか? tableでリンクを貼った画像を並べているので、<table><tr><td><a href><img>といった具合に並べています。何度か設定しようとしたのですが、文字が赤くなってしまい、エラーになってしまいます…(Dreamweaver使用です) 無理やりプレビューすると、変な場所にプレイヤーが埋め込まれて出てきます…

関連するQ&A