- ベストアンサー
JavaScriptを外部ファイルにするとロールオーバーが機能しない
ホームページビルダー11を使っているのですが、 JavaScriptを外部ファイルにして読み込ませると、ロールオーバー部分の画像のみ切り替わりません。 ////////////////////////////////////////////////// ■外部ファイルの記述内容■ <SCRIPT language="JavaScript"> <!--HPB_SCRIPT_ROV_50 function HpbImgPreload() { var appVer=parseInt(navigator.appVersion); var isNC=false,isN6=false,isIE=false; if (document.all && appVer >= 4) isIE=true; else if (document.getElementById && appVer > 4) isN6=true; else if (document.layers && appVer >= 4) isNC=true; if (isNC||isN6||isIE) { if (document.images) { var imgName = HpbImgPreload.arguments[0]; var cnt; swImg[imgName] = new Array; for (cnt = 1; cnt < HpbImgPreload.arguments.length; cnt++) { swImg[imgName][HpbImgPreload.arguments[cnt]] = new Image(); swImg[imgName][HpbImgPreload.arguments[cnt]].src = HpbImgPreload.arguments[cnt]; } } } } function HpbImgFind(doc, imgName) { for (var i=0; i < doc.layers.length; i++) { var img = doc.layers[i].document.images[imgName]; if (!img) img = HpbImgFind(doc.layers[i], imgName); if (img) return img; } return null; } function HpbImgSwap(imgName, imgSrc) { var appVer=parseInt(navigator.appVersion); var isNC=false,isN6=false,isIE=false; if (document.all && appVer >= 4) isIE=true; else if (document.getElementById && appVer > 4) isN6=true; else if (document.layers && appVer >= 4) isNC=true; if (isNC||isN6||isIE) { if (document.images) { var img = document.images[imgName]; if (!img) img = HpbImgFind(document, imgName); if (img) img.src = imgSrc; } } } HpbImgPreload('_HPB_ROLLOVER1', 'images/request.gif', 'images/request2.gif'); //--> </SCRIPT> ////////////////////////////////////////////////////// 外部ファイル読み込み時のhtmlタグ <SCRIPT type="text/javascript" scr="images/ファイル名"></SCRIPT> 恐らく、ホームページビルダーの独自性の問題だと思うのですが、 どうすればロールオーバーを機能させることができるでしょうか? 宜しくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは なるほど基礎的な部分ではないのですね とりあえず載せておきます。画像のパスなど変えて試してみて下さい あと別のものに同じ名前をつけると混乱の元になると思うので控えた方が良いかと思います 【test.js】 HpbImgPreload('_HPB_ROLLOVER1','sample0.gif','sample1.gif'); function HpbImgPreload() { var appVer=parseInt(navigator.appVersion); var isNC=false,isN6=false,isIE=false; if (document.all && appVer >= 4) isIE=true; else if (document.getElementById && appVer > 4) isN6=true; else if (document.layers && appVer >= 4) isNC=true; if (isNC||isN6||isIE) { if (document.images) { var cnt; var swImg; swImg = new Array; var N = HpbImgPreload.arguments[0]; swImg[N] = new Image(); for (cnt = 1; cnt < HpbImgPreload.arguments.length; cnt++) { swImg[N][HpbImgPreload.arguments[cnt]] = new Image(); swImg[N][HpbImgPreload.arguments[cnt]].src = HpbImgPreload.arguments[cnt]; } } } } function HpbImgFind(doc, imgName) { for (var i=0; i < doc.layers.length; i++) { var img = doc.layers[i].document.images[imgName]; if (!img) img = HpbImgFind(doc.layers[i], imgName); if (img) return img; } return null; } function HpbImgSwap(imgName, imgSrc) { var appVer=parseInt(navigator.appVersion); var isNC=false,isN6=false,isIE=false; if (document.all && appVer >= 4) isIE=true; else if (document.getElementById && appVer > 4) isN6=true; else if (document.layers && appVer >= 4) isNC=true; if (isNC||isN6||isIE) { if (document.images) { var img = document.images[imgName]; if (!img) img = HpbImgFind(document, imgName); if (img) img.src = imgSrc; } } } 1; 【test.html】 <script type="text/javascript" src="./test.js"></script> <A href="" id="_HPB_ROLLOVER" onmouseout="HpbImgSwap('_HPB_ROLLOVER1', 'sample0.gif');" onmouseover="HpbImgSwap('_HPB_ROLLOVER1', 'sample1.gif');" target="_blank"><IMG src="sample0.gif" width="73" height="19" border="0" id="_HPB_ROLLOVER1"></A>
その他の回答 (3)
ところでその >外部ファイル読み込み時のhtmlタグ はHTMLのどのあたりに記述されてるの? scriptのファイルの方 の頭に alert(); とかやって反応する?
補足
書き込みありがとうございます。 場所は、<HEAD></HEAD>の間です。 >scriptのファイルの方 の頭に alert(); とかやって反応する? ↑↑↑↑↑↑ これはどういう意味ですか?
- leap_day
- ベストアンサー率60% (338/561)
こんにちは 以下を確認してみてください ・<SCRIPT type="text/javascript" scr="images/ファイル名"></SCRIPT>ではなく上のソースをそのままhtmlにコピペしたらきちんと機能する ・外部ファイルはjsファイルにしてある(***.js) ・#1様の言うように最初と最後の<script language="javascript"><!-- //--></script>を削除している ・外部ファイルのパスがあっている ・onClick="***" ではなくonMouseover="***" になっている それでもダメなようなら IEのブラウザ設定 ツール→インターネットオプション→詳細設定→【ブラウザ】スクリプトエラーごとに通知するをチェック もしくはFirefoxなどのエラーコンソールでどこがエラーになっているか確認してみてください
補足
ご回答ありがとうございます。 それぞれの結果をご報告させていただきます。 ・<SCRIPT type="text/javascript" scr="images/ファイル名"></SCRIPT>ではなく上のソースをそのままhtmlにコピペしたらきちんと機能する ⇒もともとのソースのままなら機能します。長いので外部ファイルにしようと試みたところ、今回のロールオーバーNGになりました。 ・外部ファイルはjsファイルにしてある(***.js) ⇒.js、.txt 両方で試みましたが、どちらのパターンもロールオーバーしませんでした。 ・<script language="javascript"><!-- //--></script>を削除している ⇒こちらも削除しておりますが、ロールオーバーせずでした。 ・外部ファイルのパスがあっている ⇒バスも念のためにホームディレクトリ(一番上の階層)にして、試みましたが、ロールオーバーせずでした。(※ホームディレクトリの場合はimages/ファイル名 → ファイル名にしております。) ・onClick="***" ではなくonMouseover="***" になっている ⇒ロールオーバー(ボタン)部分については <A href="リンクページ" id="_HPB_ROLLOVER1" onmouseout="HpbImgSwap('_HPB_ROLLOVER1', 'images/ファイルA.gif');" onmouseover="HpbImgSwap('_HPB_ROLLOVER1', 'images/ファイルB.gif');" target="_blank"><IMG src="images/ファイルA.gif" width="73" height="19" border="0" name="_HPB_ROLLOVER1"></A> となっており、onMouseover=扱いになっております。 やはり、 ・HpbImgPreload() や ・_HPB_ROLLOVER1' のような、 ホームページビルダー特有の言語が起因しているように感じます。 的確な指示をいただき、ありがとうございました。
- susie-t
- ベストアンサー率86% (37/43)
ちゃんと検証したわけではないのですが 外部ファイルにする場合、最初の <SCRIPT language="JavaScript"> <!--HPB_SCRIPT_ROV_50 と最後の //--> </SCRIPT> の部分は要らないと思います。 消去してから再度試してみてください。
補足
ご回答ありがとうございます。 削除したのですが、相変わらず機能しませんでした。 でも、<SCRIPT language="JavaScript"> <!--HPB_SCRIPT_ROV_50 //--> </SCRIPT> がなくても読み込めるとは知りませんでした。 ありがとうございました。 ちなみに、クリック字にロールオーバーしていて、 マウスが乗ったときには指になるだけで、 ロールオーバーしない状態です。
補足
ありがとうございました。 無事に動くようになりました。 と、同時に、ロールオーバーを30効果近く施しているページがあるので、その作業の膨大さに冷や汗を感じる次第です(笑 プリントアウトし、元のファイルと、書き換わった部分を比較して、素材のファイル名に置き換えようと思います。