• 締切済み

FLASHを動的に入れ替えたい

こんにちは。悩みすぎて泥沼にハマってしまったので、こちらで質問させてください。 タイトル通り、FLASHを動的に入れ替えるJavaScriptを考えています。 画面上に「リンクA」「リンクB」を作って、 リンクAがクリックされたら、画面上にa.swfを。 リンクAがクリックされたら、画面上にb.swfを表示させるようなページです。 CSSのスイッチャーの様な感じで、swfを変化させます。 ----- ソース抜粋 ここから---------------------------- 【javascript】 function writeFlash(wFlag) { wFlash = ('<object><param name="movie" value="'+wFlag+'.swf" /><embed src="' +wFlag+ '.swf"></object>'); ↑↑↑中身だいぶ省略してますが、実際はここちゃんとしてます。 document.getElementById("txtflash").innerHTML = wFlash; } 【HTML】 <div id="txtflash"></div> <a href="javascript:writeFlash('a');">クリックA</a> <a href="javascript:writeFlash('b');">クリックB</a> ----- ソース抜粋 ここまで---------------------------- ほとんどのブラウザではちゃんと動作するのですが、 MacIEで実行すると、ブラウザが落ちてしまいます。 (最初からダメな時もあれば、何度かリンクをしてるうちに落ちる時もあります) どうやらinnerHTMLはMacIEではうまく動作しないようで・・・。 何かいい解決方法はないでしょうか。 教えてください。

  • kk00
  • お礼率74% (61/82)

みんなの回答

  • N_A_O
  • ベストアンサー率66% (37/56)
回答No.4

http://www.openspc2.org/reibun/javascript/multimedia/011/index.html 上記参照。 これは、MacIEでのフラッシュのこの記述に対するバグでみたいで <A href="javascript:changeSWF('swfflie')"> は落ちる時がある。パソコンや状態によるけど。 それで前に色々やってみたら、 <img src="画像" onClick="javascript:changeSWF('swffile')">や <A href="#" onClick="javascript:changeSWF('swffile')">では落ちないんだよね。スクリプトにもよるんだろうけど。

  • N_A_O
  • ベストアンサー率66% (37/56)
回答No.3

<a href="#" onClick="javascript:writeFlash('a');">クリックA</a>

kk00
質問者

お礼

ご指摘ありがとうございます。 今回の記述は、省略例だと思っていただければ幸いです。

noname#22259
noname#22259
回答No.2

>MacIEでも動きが可能な方法はご存じないでしょうか。 恐らく無理。クロスに関する議論は数多くあるがソリューションと いうべきものを見たことがない。 【参考】 http://www.jagat.or.jp/sgml/qa/web.htm 18) Mac IE 5 における DOM1 19) Mac IE 5 における XML

kk00
質問者

お礼

回答ありがとうございます。 やはりMacIEでは難しいのですね・・・。 だんだん諦めがついてきました。

noname#22259
noname#22259
回答No.1

var Mac = (navigator.appVersion.indexOf("Mac") >-1); if(Mac) return false;

kk00
質問者

補足

回答ありがとうございます。 MacIEでも動きが可能な方法はご存じないでしょうか。 OSを判別してMacの時は対象外、というのは最後の切り札としたいので・・・。 よろしくおねがいします。

関連するQ&A

  • FLASH画像からのリンクが飛ばない

    以下のようなHTMLファイルで、img画像をクリックするとリンク先へ飛びます。 しかしFLASH画像をクリックしても何も起きません。 このファイルではリンクの方法としてJavaScriptを用いていますが、aタグを用いて  <a href="リンク先">   <div>    FLASHファイルのコード   </div>  </a> のようにしても同じです。 FLASHファイルを作成する段階で、リンクをコーディングすれば良いのでしょうが、このHTML文は将来的にCGIのテンプレートとして使用し、リンク先はその時で変わるので、リンクのコーディングはFLASHファイルの外に出したいのですが・・・ 良い方法はないでしょうか。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <script type="text/javascript" src="Scripts/java.js"></script> </head> <body> <div onclick="javascript:OpenWin('answer.html')"> <img src="dot_999999.gif" width="100" height="100" /> </div><!-- end of "ichiran_body" --> <div onclick="javascript:OpenWin('answer.html')"> <object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100" height="100" > <param name="movie" value="dot_999999.swf" /> <param name="quality" value="high" /> <param name="wmode" value="opaque" /> <param name="swfversion" value="6.0.65.0" /> <!-- このパラメータタグにより、Flash Player 6.0 または 6.5 以降を使用して、Flash Player の最新バージョンをダウンロードするようメッセージが表示されます。ユーザにメッセージを表示させないようにする場合はパラメータタグを削除します。 --> <param name="expressinstall" value="Scripts/expressInstall.swf" /> <!-- 次のオブジェクトタグは IE 以外のブラウザで使用するためのものです。IE では IECC を使用して非表示にします。 --> <!--[if !IE]>--> <object type="application/x-shockwave-flash" data="dot_999999.swf" width="100" height="100"> <!--<![endif]--> <param name="quality" value="high" /> <param name="wmode" value="opaque" /> <param name="swfversion" value="6.0.65.0" /> <param name="expressinstall" value="Scripts/expressInstall.swf" /> <!-- ブラウザには、Flash Player 6.0 以前のバージョンを使用して次の代替コンテンツが表示されます。 --> <div> <h4>このページのコンテンツには、Adobe Flash Player の最新バージョンが必要です。</h4> <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Adobe Flash Player を取得" width="112" height="33" /></a></p> </div> <!--[if !IE]>--> </object> <!--<![endif]--> </object> </div> <script type="text/javascript"> <!-- swfobject.registerObject("FlashID"); //--> </script> </body> </html>

    • ベストアンサー
    • Flash
  • FireFoxでのブロック表示・非表示制御

    DIVタグで囲んだ各ブロックの表示・非表示をJavascriptで動的に制御したく、下記のソースの通りJavascriptで表示の切り替え処理を記述したところ、IE6.0では動作しましたが、FireFox2.0では切り替えリンクをクリックしても無反応の状態となってしまいました。 FireFoxのJavascript互換について経験不足のため原因がつかめず困っております。 FireFoxでも動作可能となるには、どのような記述をすればよろしいでしょうか。もしご存知の方がおられましたら宜しくお願い致します。 *** Javascriptソース ****************** function showArea(areaId){ A.style.display="none"; B.style.display="none"; C.style.display="none"; areaId.style.display="block"; } *** ブロック切り替え用リンク ****************** <a href="javascript:showArea(A)">Aブロック</a> <a href="javascript:showArea(B)">Bブロック</a> <a href="javascript:showArea(C)">Cブロック</a> *** 表示用ブロック ****************** <div id="A"> Aブロックの記述内容 </div> <div id="B"> Bブロックの記述内容 </div> <div id="C"> Cブロックの記述内容 </div>

  • IEだけで動きません。Javascriptに関する質問です。

    IEだけで動きません。Javascriptに関する質問です。 初心者です。よろしくお願いします。 下記のページを作りました。 menuをクリックすると、ページが現れるようにしています。aaa.jsで制御しています。 ページの高さがそれぞれ違うので、bbb.jsで高さを取得しています。 IEでは、bbb.jsのwindow.parent.document.getElementById('obj')で「オブジェクトがありません」とエラーが出て、動きません。 他のブラウザでは動きました。 どうしてでしょう? 悩んでいます。 どなたか教えてください。よろしくお願いいたします。 <html>   <head> <link rel="stylesheet" type="text/css" href="main.css" media="screen,print" /> <script type="text/javascript" src="aaa.js"></script>   </head> <body>   <div id="container">   </div>       <div id="menu">    <ul>    <li><a href="javascript:changeObj('a.htm')" title="a">a</a></li>    <li><a href="javascript:changeObj('b.htm')" title="b">b</a></li>    <li><a href="javascript:changeObj('c.htm')" title="c">c</a></li>    </ul>   </div>     </body> </html> ***aaa.js*** /* オブジェクトの変更 */ function changeObj(html){ var contents = '<object id="obj" data="' + html + '" type="text/html"><\/object>'; window.document.getElementById('container').innerHTML = contents; } ***main.css*** /* obj */ #obj{ visibility:hidden; position:absolute; right:5%; min-width:560px; background-color:#CCFFFF; z-index:1; border-style:none; overflow:visible; } ***a.htm*** <html>  <head> <script type="text/javascript" src="bbb.js"></script>  </head>   <body> <div id="page-height"> <div id="a"><!--ここにページ内容--> </div> </div>   </body> </html>

  • innerHTMLを使わずに…

    初めまして。 よく、リンクに触れると、下に説明文が表示される…というようなサイトがありますよね。 それの応用で、innerHTMLを使わずに以下のような物を作りたいのですが、お力を貸してくださいm(_ _)m ボタンAとボタンBがあって、ボタンAをクリックすると画像Aを表示。 ボタンBをクリックすると画像Aから画像Bに表示が切り替わる。 その表示した画像に個別のリンクを貼る。 <table border="0" cellspacing="0" cellpadding="0"> <tr> <td><A onMouseOver="img.innerHTML='<a href=URL><IMG src=画像Aアドレス></a>'" onMouseOut="text.innerHTML='<a href=リンクA><IMG src=画像Aアドレス></a>'">ボタンA</A></td> <td rowspan="2"><font id="img"></font></td> </tr> <tr> <td><A onMouseOver="img.innerHTML='<a href=URL><IMG src=画像Bアドレス></a>'" onMouseOut="text.innerHTML='<a href=リンクB><IMG src=画像Bアドレス></a>'">ボタンB</A></td> </tr> </table> という物を作りたいのですが、innerHTMLは対応していないブラウザが多いので、使用したくないのです。 JavaScript、CSSはOKです! よろしくおねがいします。

    • ベストアンサー
    • HTML
  • リンク押下でタグを書き換えたい

    リンクが複数あって、押したリンク文字だけ<span></span>のみにしたいと 思っています。また対応するdivタグのdisplay属性も書き換えたいです。 とりあえず思いついたのは以下の方法なのですが、冗長ですし、 リンクの数が増えた場合に足していくのが大変です。 もっとシンプルに書く方法がないものでしょうか。 ご助言ください。 <html> <body> <script> function change(spanid,divid,menuName){ document.getElementById('menu1').innerHTML = "<a href=\"javascript:void(0)\" onclick=\"change('menu1','div1','メニュー1')\">メニュー1</a>"; document.getElementById('div1').style.display="none"; document.getElementById('menu2').innerHTML = "<a href=\"javascript:void(0)\" onclick=\"change('menu2','div2','メニュー2')\">メニュー2</a>"; document.getElementById('div2').style.display="none"; document.getElementById('menu3').innerHTML = "<a href=\"javascript:void(0)\" onclick=\"change('menu3','div3','メニュー3')\">メニュー3</a>"; document.getElementById('div3').style.display="none"; document.getElementById(spanid).innerHTML = menuName; document.getElementById(divid).style.display="block"; } </script> <ul> <li><span id="menu1">メニュー1</span></li> <li><span id="menu2"><a href="javascript:void(0)" onclick="change('menu2','div2','メニュー2')">メニュー2</a></li> <li><span id="menu3"><a href="javascript:void(0)" onclick="change('menu3','div3','メニュー3')">メニュー3</a></li> </ul> <div id="div1"> test1 </div> <div id="div2" style="display:none"> test2 </div> <div id="div3" style="display:none"> test3 </div> </body> </html>

  • Flash Playerでのリンク

    Flash MX2004を使用してます。 同じパソコン上で、 a.swfとb.swfというFlashファイルを作って、 a.flaの「ボタン」のアクションから on (release) { getURL ("b.swf", "_self"); } と入力してパブリッシュ後、a.swfから実行すると IE(ブラウザ)が立ち上がってbのリンクへ飛びますが、これをFlash Playerのみを使って(ブラウザを使わずに)リンクさせることはできますか。

  • Javascriptの配列についてFLASH画像を反映させるには

    javascriptの回転バナーを表示させているのですが、静止画像であれば 上手に反映されるのですが、FLASHのswfを指定すると表示されません。ちなみにswfではなく、<object></object>を埋め込んでも表示されませんでした. javascriptの配列でFLASHを表示させるにはどうのようにしたら良いのでしょうか? var txt = new Array(); #静止画像 txt[0]="<A href='http://www.xxxxxxx.com' target='_blank'><IMG src='banner/○○○.gif' border='0'></A>"; #FLASH画像(swfバージョン) txt[1]="<A href='http://www.YYYYYYY.com/' target='_blank'><IMG src='banner/▲▲.swf' border='0'></A>"; #FLASH画像(objectバージョン) txt[2]="<A href='http://www.○○○.com'<object> classid='clsid:xxxxxxxxxxxxxxxxxxxxxxxxxxx' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0' width='500' height='70'> <param name='movie' value='http://www.ssss.com/banner/●●.swf'> <param name='quality' value='high'></object> </A>"; mmax = 3; //メッセージ行数 txtno = Math.floor(Math.random() * mmax); document.write(txt[txtno]); 1.静止画像だけで配列するとバナーが表示されます。 2.FLASH、拡張子swfにすると×マークで表示されます。 3.<object></object>にすると全て表示されなくなります。 javascriptの配列でFLASH画像を表示させるにはどうしたら良いのでしょうか? 宜しくお願い致します。

  • 指定位置に要素を追加する

    <script type="text/javascript"> function test(){ var hako2 = document.createElement('div'); hako1.innerHTML = "TEST2"; var lk2 = document.getElementById('link2'); var li2 = lk2.parentNode; li2.appendChild(hako2); } </script> </head> <body> <div><a href="1" id="link1">1</a></div> <div><a href="2" id="link2">2</a></div> <div><a href="3" id="link3">3</a></div> <input type="button" onclick="test()" value="test"> </body> みたいなイメージなのですが、いかんせんスマートじゃありません できれば<div>で<a>を囲うのをやめたいのです。 ターゲットになる<a>の位置は固定ではなく前後に他の要素が入ることもあります <a href="2" id="link2">2</a>の次に<div>TEST2</div>を生成できればどんなのでも?いいのですが、何かいいやり方ありませんか?

  • innerHTMLの初期値

    下記のソースがあります。 <SCRIPT TYPE="text/javascript"> <!-- function Change(id){ if(document.all){ document.all.result.innerHTML = document.all(id).innerHTML; }else if(document.getElementById){ document.getElementById('result').innerHTML = document.getElementById(id).innerHTML; } } //--> </SCRIPT> <a href="#" onClick='Change("ih2"); return false'>前</a><br> <a href="#" onClick='Change("ih3"); return false'>次</a><br> <div id="ih2" style="display:none">テキスト1</div> <div id="ih3" style="display:none">テキスト2</div> <br> <span id="result"></span> 前、次のリンクで表示されるテキストが切り替わるようにしているのですが、 クリックする前の段階では何も表示されていない状態です。 そこで、クリックする前でもid="ih2"の「テキスト1」が表示されている状態にしたいのですが、 なかなか出来ません。 functionの前に document.all.result.innerHTML = document.all.ih2.innerHTML; と記述してみましたが駄目でした。 id="ih2"の値を読み込んで表示させたいのですが、 何か良い方法はありませんか。

  • FLASHで作成したバナーをリンクボタンにしたい

     タイトルの文書で重複しますが、FLASHで作成したバナー(abc.swfとします)をリンクボタンにしたい(リンク先を「http://www.***.co.jp/」)のですが、 <a href="http://www.***.co.jp/"> <img src="abc.swf"> </a> としても、swfファイルが画像と認識せずに表示されません。この場合、どのように表記させると、ブラウザ上でswfファイルが表示されるのでしょうか?  教えてください。よろしくお願いします。

専門家に質問してみよう