2

<a href="javascript:my_func();">link text</a>ユーザーをだまして本物のリンクだと思わせるようなリンクを作成することは、嫌われていることは承知しています。

ページナビゲーションを強制するのではなく、ブラウザでJSコードを実際に実行するだけのリンクがかなりあります。そのため、上記を使用したくなく、すべてのブラウザで機能し、中クリックで開くのを防ぐ代替手段を探しています新しいタブ/ウィンドウ。

次のアプローチは満足のいくものでしょうか?

HTML

<a href="javascript:void(0);" id="id_here">link text</a>

JavaScript

$("#id_here").bind('click',(function(params){
    return function(){
        // do stuff here with `params`
    };
})(params));
4

4 に答える 4

3

javascript:何でも悪い。javascript:上記の2つの使用法に大きな違いはありません。に使用"#"するのhrefはほぼ同じくらい悪いです。JSをオフにすると履歴に追加され、リンクは役に立ちません。あなたが(理想的には)すべきことは、リンクを実際に機能させることです。

<a href="/an/actual/path"> ...

次に、JSを使用して、デフォルトのリンク動作を防止します

$("#id_here").on('click', function (e) { e.preventDefault(); });

移動する実際のパスがない場合は、JSをオフにしてリンクを公開しないでください。後でDOMに追加するか、CSSで非表示にする(そしてJSで表示する)ことができます。

于 2012-08-31T22:21:31.100 に答える
0

<a>など、以外の別のノードを使用することをお勧めします。<div>

<div id="jsLink" style="cursor:pointer">Click Me</div>

およびjQuery:

$("#jsLink").click(function(params){
  // do something
}
于 2012-08-31T22:21:45.487 に答える
0
<a href="#" id="id_here">link text</a>

#リンクをリンクJavaScriptのように見せるためにここにあります:

$("#id_here").bind('click',function(e){
    e.preventDefault();
})

e.preventDefault()は、ブラウザがデフォルトのアクション(別のページに移動するなど)を実行することを許可しません

于 2012-08-31T22:22:19.937 に答える
0

私はいくつか遊んでみましたが、次のようにして良い結果を得ることができますhashchange:

var commands = {
    foo: function() { alert("Foo!"); },
    bar: function() { alert("Foo bar!"); },
    baz: function() { alert("Foo bar baz!"); }
};

$(window).bind('hashchange', function() {
    var hash = window.location.hash.replace(/^#/,'');
    if(commands[hash]) {
        commands[hash]();
        return false;
    }
}).trigger('hashchange');​

次の単純な HTML を使用します。

<a href="#foo">Foo</a>
<a href="#bar">Bar</a>
<a href="#baz">Baz</a>​

これは、右クリック -> 新しいタブで開くか、中クリックしても機能します。


hashchangeすべてのブラウザでサポートされているわけではないことに注意してください。

于 2012-08-31T22:38:44.757 に答える