2017-03-09 12 views
1

FirefoxまたはChromeを使用してウェブページを閲覧する場合、右Altキーを押しながらハイパーリンクのテキスト、<a>タグを含む要素を選択できます。ハイパーリンクを選択可能にする

私のアプリでは、ボタンを押したままではなく、デフォルトでjavascriptを使用してこれを実現したいと思います。ユーザーがダブルクリックするとurlにリダイレクトされます。そうしないと、ユーザーはプレーンテキストのようにコンテンツを選択できます。

最初に試したことは、すべて<a>要素を<span>要素に置き換え、関連するイベントを実装することでした。これは私が望む機能を提供しますが、見た目はかなり荒いです。私はすべての属性(クラス、id)を同じに保ちます。それは私が扱っているページのタグ<a>特定のCSSがあるようです。

今、何をしようとしているのは、これを達成することです。

var linkElems = document.getElementsByTagName('a'); 

for (var i = linkElems.length - 1; i >= 0; i--) { 
    linkElems[i].ondblclick = function() { 
      //redirect to url 
     }; 

    linkElems[i].setAttribute("href", "#"); 
    linkElems[i].onclick = function() { return false; };  
} 

をこのコードの後、リンクがページがそれぞれのURLにリダイレクトがありませんが、私はそれはそれでURLを持ついくつかのボックスをドラッグテキストを選択しようとすると:私の現在のコードは次のとおりです。

document.body.ondragstart = function(){return false;} 

は今、私はドラッグを防ぐが、それでもテキストを選択することはできません。それを防ぐために、私はこのコード行を書きました。私はこれを解決する方法があるのだろうか。

+0

に関する詳細についてdata-*属性を見つけることができ、その後、あなただけの属性がためsettedているものCSSを検討する必要がありあなたのスパンリンクにもそれらを設定してください。 – rakwaht

+0

@rakwaht私はそれらのファイルを作成せず、それらを変更したくないので、それは良いアイデアだとは思わなかった。さらに、ブートストラップのようなライブラリがあり、それらを変更したくない場合もあります。 –

答えて

3

これを参照してください。

データ属性を使用しましたが、href属性を定義しませんでした。

あなたは、私が最初のアイデアは良いものだったと思うMDN

$(function(){ 
 
    $(".aLink").dblclick(function(){ 
 
    var link = $(this).attr("data-href"); 
 
    window.location.href = link; 
 
    }); 
 
});
a { 
 
    color: blue; 
 
    text-decoration: underline; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<a data-href="https://example.com" class ="aLink">Link 1</a> <br><br> 
 
<a data-href="https://example.com/something" class ="aLink">Likn 2</a>

+0

しかし、あなたはユーザーを妨害するようなポインタ要素をもう持っていません... – mahatmanich

+1

CSSプロパティは 'cursor:pointer'に追加できます。ポインタの場合は、それを選択できないという認識があるかもしれません。 – vatz88

+0

実際には、ダブルクリックの実装に問題はなく、独自のdata-href属性を使用して、例のようにURLを保持していました。問題は、href属性を削除せず、 "#"に設定していたことです。それを指摘してくれてありがとう。 –

関連する問題