JavaScriptの動作について

このQ&Aのポイント
  • JavaScriptの動作に関する問題について
  • IE8では動作するが、Google ChromeやFirefox、Safariでは動作しない
  • 解決策や回避策を教えてください
回答を見る
  • ベストアンサー

javascriptの動作について

こんばんは。 直接アドレス指定などしてきたものについては、 トップページへ飛ばすことをしようと思ったのですが、 以下の記述だと、IE8では動作しましたが、GoogleCrome(11.0.696.77)、firefox(3.6.0)、safari では動作しませんでした。(location.hrefがダメなんでしょうか?) 解決策・回避策などあれば教えてください。 よろしくお願いします。 <script language="JavaScript" type="text/JavaScript"> <!-- var url; url = document.referrer; if(url != 'http://xxxxxxxxx'/){ location.href('http://xxxxxxxxxxxxx'); } // --> </script>

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

  • ベストアンサー
  • 4017B
  • ベストアンサー率73% (1301/1772)
回答No.1

とりあえずこんな感じOKでした。一応、Gecko、Webkit、Trident~で動作確認済みです。 ━ ココから ━━━━━━━━━━━━━━━━━━━━━━━━ <script type="text/JavaScript"><!-- window.onload = function(){ var my_url = 'http://example.com/'; //ここにTOPページを代入 var my_ref = document.referrer; if( my_ref.indexOf(my_url) < 0 ){ window.location.href = my_url; } }; //--></script> ━ ココまで ━━━━━━━━━━━━━━━━━━━━━━━━ Chromeだと一瞬だけ、元ページが表示されます(笑)。他のブラウザの場合は、元ページも一切表示されずに、my_urlで指定されたページへ飛びます。 P.S. まさかとは思いますが…。例文の「if(url != 'http://xxxxxxxxx'/){」はタイポですよね?? もしそれがそのままソースコードとして記述されてるのだとしたら、’で囲われた区切りがおかしいです。文末が「xxxx'/」ではなく、「xxxx/'」となるべきです。 まあ、それはそれとして。回答文の物は、少し色を着けてます。というか例文のままだと、普通にサイト内リンクとかの場合にも、直リンクと見なして飛ばされてしまうのでは??

beachtable
質問者

お礼

ありがとうございました!! 期待通りの動作が確認できました! ただ、回答いただいた内容をHTML内に追加したら、動作しなかったので、 JSファイルにして、呼出す方法にしたら、うまくいきました。 また、確かに最初質問した内容だとサイト内リンクでNGでした。 文字列検索にしたほうが良いですね。参考になりました。 助かりました。ありがとうございます。

関連するQ&A

  • JavaScriptを追加したい

    こんにちは。 こちら(ttp://f22.aaa.livedoor.jp/~sncspt/)のサイトさんの配布している「SNC THREADBBS 3」を使用したいのですが、その中に ***** <script type="text/javascript"> <!-- var url = "http://サイトアドレス"; if((document.referrer == "") || (document.referrer.match(url) == null)) { window.location.href = url; } // --> </script> ***** もしくは、 ***** <LINK rel="stylesheet" TYPE="text/css" HREF="javascript.js"> ***** のように入れたいのですが、どこにどう入れたらいいか分かりません。 そのサイトさんで聞けばいいのかもしれませんが、少し急いでいますのでどなたかアドバイスをお願いしたいです。 よろしくお願いします。

  • Javascriptで自動更新

    あるページを10秒に一度、自動で更新させたいのですがなにかよい方法はありませんか? このサイトで見かけたスクリプトを試してみても動作しませんでした;; <script language="JavaScript"> <!-- min=60; setTimeout('reload()', min*1000); function reload() { location.href=location.href; } //--> </script> Javascriptで実現する方法があれば教えてください。

  • JavaScript、動作解説のおねがい!

    こんにちは。お世話になります。 次のJavaScriptは、どういった事(何を)するものか、おしえてください。 <script type="text/javascript"> //<![CDATA[ if ((top != self) && location.href.match(/^http:\/\/[\d]+\.[\d]+\.[\d]+\.[\d]+\/translate_c/)){ if ( navigator.appName == 'Netscape' && parseInt(navigator.appVersion) == 6 ) { top.location.replace(location.href); } else { top.location = location.href; } } //]]> </script> よろしくお願いします。

  • JavaScript内にJavaScriptを読み込む方法

    HTML内に <script type="text/javascript" src="main.js"></script> という一行を追加すると、バナーが表示されるというスクリプトを作成しています。 main.jsは、 html = '<script language="JavaScript">'; html += 'var url0101 = "url01.xxx.jp";'; html += 'var url02 = "url02.oooo.jp";'; html += '</script>'; html += '<script language="JavaScript" src="http://xxx.xxxx.xxx/test.js"></script>'); html += '<script language="JavaScript">'; html += 'Function01("check")'; html += '</script>'; document.write(html); というような風になっており、 (1) 変数の宣言 ↓ (2) http://xxx.xxxx.xxx/test.jsの読み込み ↓ (3) (2)で読み込んだjs内の関数Function01を実行 という流れです。 FireFoxでは表示されましたが、IE6では (2)のjsを読み込む前に(3)のFunction01が実行され、 「オブジェクトを指定してください」のエラーが表示されてしまいます。 よい方法がありましたら教えていただけますでしょうか? よろしくお願いします。

  • JavaScript内にJavaScriptを読み込む方法

    HTML内に <script type=\"text/javascript\" src=\"main.js\"></script> という一行を追加すると、バナーが表示されるというスクリプトを作成しています。 main.jsは、 html = \'<script language=\"JavaScript\">\'; html += \'var url0101 = \"url01.xxx.jp\";\'; html += \'var url02 = \"url02.oooo.jp\";\'; html += \'</script>\'; html += \'<script language=\"JavaScript\" src=\"http://xxx.xxxx.xxx/test.js\"></script>\'); html += \'<script language=\"JavaScript\">\'; html += \'Function01(\"check\")\'; html += \'</script>\'; document.write(html); というような風になっており、 (1) 変数の宣言 ↓ (2) http://xxx.xxxx.xxx/test.jsの読み込み ↓ (3) (2)で読み込んだjs内の関数Function01を実行 という流れです。 FireFoxでは表示されましたが、IE6では (2)のjsを読み込む前に(3)のFunction01が実行され、 「オブジェクトを指定してください」のエラーが表示されてしまいます。 よい方法がありましたら教えていただけますでしょうか? よろしくお願いします。

  • 外部javascriptファイルをjavascriptから動的に呼び出したい

    呼び出し元のURLによって動作を変えたいJAVASCRIPTがあります。 普段外部のJAVASCRIPTを呼び出すときはよくこうするのですが <script type="text/javascript" src="js.php?key=url"></script> これでは「key=url」が固定になってしまいます。そこで下記のように <script> var commentname=document.URL; var str=encodeURIComponent(commentname); document.write('<script type="text/javascript" src="read.php?key=',str,'"><\/script>'); </script> document.writeを使って無理やり外部Javascriptファイルの呼び出しスクリプトを書いているのですが、この書き方はどうもエレガントさにかけるというか、いまいち気に入りません。 もっとほかに良い方法がある気がするのですが、調べてもわかりませんでした。おわかりになる方がいらっしゃったらご教示頂けないでしょうか。

  • リンク時にjavascriptを2つ動作させたいのですが・・・

     こんにちは。 実はHPで、リンク時に、javascriptで2つのことを命令したいのです。 1つ目は、効果音をならす。 2つ目は、リンク先でブラウザの戻るを禁止する といったような感じです。  しかし、javascriptはよく分からないので、とりあえず、下のようなタグを書いたのですが、ちっとも動作しませんでした。  どなたか、教えていただければ助かります。 <head> <script language="JavaScript"> <!-- function wav(name) {sound.src = name;} //--> </script> <bgsound src="" id="sound"> </head> <body> <a href="javascript:window.location.replace('リンク先URL');" javascript:wav('効果音のファイル名')">リンク</a> </body>

  • javascriptでGETパラメータを扱う

    javascript初心者です。 javascriptでURLをGETパラメータとして取得して、その値を HTMLのaタグのリンク先に指定しようとしています。 こんな感じに出来たらいいと思っています。 ↓ <a href="[GETパラメータで取得したURL]">[GETパラメータで取得したURL]</a> GETパラメータの取得は自力で調べて下記のように記述すればできることがわかりましたが、 aタグのリンク先に指定する記述方法が分かりません。 助けてください。 よろしくお願いします。 <script type="text/javascript"> function getUrlVars() { var vars = [], hash; var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); for(var i = 0; i < hashes.length; i++) { hash = hashes[i].split('='); vars.push(hash[0]); vars[hash[0]] = hash[1]; } return vars; } </script>

  • javascriptで取得したurlの情報をGETで送る方法がわかりません。

    現在のURLをjavascriptで取得し、その取得した情報を送る方法を教えてください。 以下のソースでURLを取得しgetで送るにはどのようにすればよいのでしょうか? <scripttype="text/javascript"language="javascript"> var url = document.write(document.URL); </script> <a href="./submit.php?document.write(url)">新規登録</a> 以上よろしくお願いします。

  • これをOperaでも動くようにしたい

    http://programming-magic.com/?id=158 こちらの function(){ var l = document.getElementsByTagName("A"); for(var i=0; i<l.length; i++){ var a = l[i]; if(a.href.indexOf('javascript:',0)){ var e = /*@cc_on!@*/0; if(e){//IE専用 a.href = 'javascript: (function(){location.href = "'+a.href+'";})();'; } else{//Firefox、Opera、Safari a.href = 'data:text/html;charset=utf-8,'+encodeURIComponent('<script type="text/javascript"><!--\ndocument.write(\'<meta http-equiv="refresh" content="0;url='+a.href+'">\');// --><'+'/script>'); } } } } を、Operaでも動くようにできませんでしょうか