CTRLリンクを + クリックして新しいウィンドウを開くときに、デフォルトの IE 7 機能を抑制することは可能ですか? もしそうなら、どのように?
ありがとう!
CTRLリンクを + クリックして新しいウィンドウを開くときに、デフォルトの IE 7 機能を抑制することは可能ですか? もしそうなら、どのように?
ありがとう!
CtrlInternet Explorer で子要素のないリンクの + クリックを抑制する方法はありません。キーが押されたままonclick
の場合、リンクのクリックに対してイベントはまったく発生しません。CtrlMicrosoft は、ユーザーを混乱させる恐れがあるため、この機能を変更することを望んでいないようです。
この回答を投稿する前に、何らかの公式の確認/説明を検索しましたが、残念ながら、この制限は MSDN のドキュメントに記載されておらず、Google は役に立ちませんでした。それにもかかわらず、それは真実です。自分で試してみてください。
<a href="#" onclick="alert('Hello');">Hello</a>
Ctrlリンクを + クリックしてもアラート ボックスは表示されません。pinkgothicによると、リンクに子要素を割り当てると問題が回避されます。例えば:
<a href="#" onclick="alert('Hello');"><span>Hello</span></a>
これが機能するのは、<span>
要素に伝播する前に、まず要素に対してクリックがトリガーされるため<a>
です。
リンクテキストをスパンで囲みます。このような:
<a href="test.html"><span>click here!</span></a>
jQuery のevent.preventDefault()メソッドまたは類似のメソッドを使用すると、管理しているページのデフォルトの動作をオーバーライドできます。
ブラウザとその動作は「ユーザーのもの」であるため、正当な理由なしにユーザーのブラウザの動作を変更することは一般的に悪い習慣です。
opと同じ問題があり、アンカーhref属性に「#」と、対応するリンクの場所を含む追加のdata-href属性を与えることで解決しました。リンクをたどるにはクリックハンドラーが必要です。また、「新しいウィンドウで開く」を右クリックしても、このアプローチでは機能しません。
eg: In AnchorTag, Use href and data-ref as:
<a id="logout" href="#" data-href="${yourPath}">
And in javascript, use
$("#logout").click(function(e) {
if(e.ctrlKey)
e.preventDefault();
window.location = $(e.target).attr("data-href");
});
jquery を使用すると、ctrl+クリック機能を自分で処理し、false を返すことができます。たとえば、
$("a").click(function(event){
if(event.metaKey || event.ctrlKey){
//handle over here
return false;
}
});
これは、Mac を含むすべてのブラウザで機能します
スクリプトをアンカーに追加して false を返す
<a href='some.htm' onclick='return false;'></a>
また、ツリービューがよりアクセスしやすくなるため、ツリービューでアンカーを使用することは有効です。