2012-05-12 8 views
0

thisトピックは学際的です(しかし、まだユーザーエクスペリエンスに関するものです)。私はこのことについてjavacript開発者を考えるとcuriuosです。内部アクションとajaxリクエストのリンクを区別する最も良い方法は?

私のサイトの処理ahrefで始まるタグは、#で始まり、ajaxリクエストとして処理されます。リクエストが正常に行われた場合は、ドキュメントハッシュを適切に変更します。今では、サイトのトップに行くような内部js関数を呼び出すアクションリンクを実装したいと思いますが、ほとんどのブラウザでリンクを参照しているときに参照URLを示すヒントが表示されているので、javascript:myAction()参照は不要です。私は恐らくaction:myActionのような独自のURLスキーマを使うことができますが、十分な解決策ではありません。ユーザーは依然として魔法のURLについてヒントを得ていました。別のオプションは、hrefのカスタム属性をカスタム文字列として使用しています。たとえば、action="myAction"などです。 href="Go to top"でも、ブラウザの互換性はどうですか?最後の解決策は、URLについては暗示されていませんが、これはリンク機能の一部です(デフォルトのURLに行く)。

何が良いの?なぜですか?

答えて

0
<script> 
if(window.addEventListener)//Chrome, Firefox and Safari 
    document.getElementById('myLink').addEventListener('click',function(e){ 
     var e = e || event; 
     e.preventDefault(); 
     window.location = destiny; 
    }); 
else//IE and Opera 
    document.getElementById('myLink').attachEvent('onclick',function(e){ 
     var e = e || event; 
     e.preventDefault(); 
     window.location = destiny; 
    }); 
</script> 
<a href="#" id="myLink">Link</a> 
+0

私は実装方法を知っています。私はどのような解決策がユーザーの観点から良いのか尋ねます。 1つは規則的なリンクとして動作し、2番目のリンクは動作しませんもし私があなたに-1を与えることができれば、これは私が求めているものではないからです。私はあなたがなぜコードを書くのか理解していません... – kbec

+0

私はこの方法が最善の解決策だと思います。 –

0

最初にリンクを作成する必要があります。without JavaScript。次に、誰かが<a href='/customers'>Customers!</a>をクリックすることについて心配する必要はありません。それはうまく動作し、アクセス可能です。この点に達すると、ユーザーエクスペリエンスを高めるためにJavaScriptを一番上に置きます。あなたはこれらのすべてをフックどのようにあなた次第です - あなたは一般的な方法で削除を処理したいと言う、あなたはこのように見えるリンクが持っているかもしれません:

<a href='/customers/2' class='delete'>Delete customer</a> 

<a href='/customers/2' data-action='delete'>Delete customer</a> 

それともリンクあたりの特定だ場合、あなたはIDを設定しますそのように配線してください:

<a href='/customers/2' id='delete'>Delete customer</a> 

この配線は、すべて外部のJavaScriptファイルで行う必要があります。

+0

webappにindexという名前のファイルが1つしかないので、私はサーバ関連のリンクを使用していません。すべてのデータ要求は、 'a'タグのリンクをハッシュで始まる' href 'で捕捉することによって行われ、クライアント側のajaxエンジンによって翻訳され、処理されます。これは厳密にJSアプリケーションです。リンクをクリックすると、ブラウザの組み込みアクションによってURLが通知されます。私が欲しいのは、ユーザーフレンドリーなブラウザ内蔵のヒントと、要求のない内部-js-actionリンクを使用する素晴らしいソリューションです。または、他の方法がない場合はなし.Ah – kbec

+0

ああ、もちろん、hrefファーストハッシュとのリンクの処理はそのままでなければならない。イベント処理のコードは私の問題ではありません。 – kbec

0

私が最初にJSのないユーザーはDOMがロードされた後、私はすぐにそれを高めるために、JSを取るだろう

<a href="#" title="Go to the top of the page">Go to top</a> 

のように、それを使用することができますように、すべてのものを書くことで、これを行うだろう。最初にonclickイベントを追加し、hrefを削除して、リンクヒント(リンク以外のコンテンツはバリデータを渡していない可能性があります)と、カーソルがホバー上のポインタになる新しいスタイル属性を削除します。

非常に役に立ちますprogrammatic progressive enhancement structureの一部です。このようにして、私は有効で互換性のあるコードと快適な動作を得ることができます。

関連する問題