2017-08-18 9 views
2

以下のスクリプトでは、アンカータグをクリックするとブラウザの変数urlの出力をロードしようとしていましたが、実行中に警告の期待結果パスを表示していましたアンカータグに記述されているパスをロードします。ブラウザの同じタブに出力パスをロードします。これを解決するために私を助けてください。URLを変更したりURLをロードする際のJqueryの問題

<html> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
    <script> 
    $(document).ready(function(){ 
     $("a").on('click', function(){ 
      var reqURL = window.location.href; 
      var hrefVal = $(this).attr('href'); 
      var url;   
      if(hrefVal.indexOf("http")== -1){ 
       if(reqURL.indexOf("/ca-en") != -1){ 
        url="http://www.mywebsite.com/site2"+hrefVal; 
       }else if(reqURL.indexOf("/ca-fr")> -1){ 
        url="http://www.mywebsite.com/site3"+hrefVal; 
       }else{ 
        url="http://www.mywebsite.com"+hrefVal;  
       } 
       alert(url); 
       window.open(url,"_self"); 
      }  
     }); 
    }); 
    </script> 
</head> 

<body> 
    <ul> 
    <li> 
     <a class="category" href="/home.html">home<span class="icon plus"></span></a> 
     <ul class="submenu"> 
      <li><a href="/home/abc.html">abc</a></li> 
      <li><a href="/home/xyz.html">xyz</a></li> 
      <li><a href="/home/tam.html">tam</a></li> 
     </ul> 
    </li> 
    </ul> 
</body> 
</html> 
+0

したがって、ブラウザのページにURLのコンテンツを表示し、アドレスバーにURLを表示したいとします。これはまさに単純な ' 'の機能です。 – Viktor

+0

'window.location'を確認してください。 – Pugazh

答えて

0

カスタム動作ロジックを実行する前に、アンカータグのデフォルトの動作を停止する必要があります。あなたのコードは次のように書くことができます:

<script> 
$(function(){ 
    $("a").on('click', function(e){ 
     e.preventDefault(); 
     var reqURL = window.location.href; 
     var hrefVal = $(this).attr('href'); 
     var url;   
     if(hrefVal.indexOf("http")== -1){ 
      if(reqURL.indexOf("/ca-en") != -1){ 
       url="http://www.mywebsite.com/site2"+hrefVal; 
      }else if(reqURL.indexOf("/ca-fr")> -1){ 
       url="http://www.mywebsite.com/site3"+hrefVal; 
      }else{ 
       url="http://www.mywebsite.com"+hrefVal;  
      } 
      alert(url); 
      window.open(url,"_self"); 
     }  
    }); 
}); 
</script> 
+0

トップに記載されている同じ問題に直面しています。これはすごくうまくいきます。これは私が期待したものです。ありがとうございます。 – thamizhinian

+0

@thamizhinian私はこの4分前に、あなたは見たことがありますか? –

0

anchor tagonclick機能を追加する必要があります。それ以外の場合は、javacrip window.openがロードされる前に、常にのパスanchor tagにリダイレクトされます。

<html> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
    <script> 

    function redirect(parameter){ 
      var reqURL = window.location.href; 
      var hrefVal = parameter; 
      var url;   
      if(hrefVal.indexOf("http")== -1){ 
       if(reqURL.indexOf("/ca-en") != -1){ 
        url="http://www.mywebsite.com/site2"+hrefVal; 
       }else if(reqURL.indexOf("/ca-fr")> -1){ 
        url="http://www.mywebsite.com/site3"+hrefVal; 
       }else{ 
        url="http://www.mywebsite.com"+hrefVal;  
       } 
       alert(url); 
       window.open(url,"_self"); 

      } 
    } 

    </script> 
</head> 

<body> 
    <ul> 
    <li> 
     <a class="category" href="/home.html">home<span class="icon plus"></span></a> 
     <ul class="submenu"> 
      <li><a href="#" onclick="redirect('/home/abc.html')">abc</a></li> 
      <li><a href="#" onclick="redirect('/home/xyz.html')">xyz</a></li> 
      <li><a href="#" onclick="redirect('/home/tam.html')">tam</a></li> 
     </ul> 
    </li> 
    </ul> 
</body> 
</html> 
0
- <li><a href="/home/abc.html">abc</a></li> 

+ <li><a href="javascript:void(0);" data-url="/home/abc.html">abc</a></li> 


- var hrefVal = $(this).attr('href'); 

+ var hrefVal = $(this).data('url'); 

非常にシンプルな...

0

は、問題は、それはあなたがhrefに与えられた値何にリダイレクトするために使用、あなたが<a>タグを使用しているときについてです。したがって、あなたのスクリプトを実行する前に、あなたのデフォルトの行動を防ぐことが考えられます<a>タグ。

onclickスクリプトでevent.preventDefault()を使用してください。これにより、<a>タグのデフォルトのリダイレクトが防止されます。

参考のためfiddlerを探してください。

希望します。

関連する問題