2017-05-11 9 views
0

私は自分のWebアプリケーションにリンクを持っています。これはユーザーがリンクへのアクセスを確認する必要があります。インラインおよび外部JSとの結果が異なる "返品確認"

だから、これは私のために正常に動作します:

<a href="/danger/" onclick="return confirm('Are you sure?');"> Danger (Inline JS)</a> 

私はキャンセルしたり、受け入れることができアラートを、プロンプトが表示されています。私がリンクをキャンセルした場合、私はリンクがアクセスされたことを受け入れる場合はアクセスされません。

しかし、すべてのインラインJSをファイルに移動したいと思います。

dangerConfirm.js

function requestDangerConfirm(){ 
    return confirm('Are you sure?'); 
} 

mySite.html

<a href="/danger/" onclick="requestDangerConfirm()"> Danger </a> 
<script type="text/javascript" src="~/dangerConfirm.js'%}"></script> 

私は再び警告ボックスを促したんだけど、私は何を選ぶかに関係なく、リンクがアクセスされました。

これはどうやって違いますか?インラインJSの動作を外部ファイルでどのように再現できますか?

+0

をonclickの "しかし、私は、ファイルにすべてのインラインJSを移動したいです" _のonclick属性マークアップ? :) – Andreas

+0

それはインラインJSとしてカウントされますか? – SaAtomic

+1

これはマークアップに含まれているので、それは "インライン"です - [Unobtrusive JavaScript](https://en.wikipedia.org/wiki/Unobtrusive_JavaScript) – Andreas

答えて

1

returnがありません。 javascriptは、インラインまたは外部javascriptファイルであれば、あなたの関数から意思決定を行いませonclick。彼らに復帰.without onclick="return requestDangerConfirm()"

前と同じクリックイベントを変更します。

function requestDangerConfirm() { 
 
    return confirm('Are you sure?'); 
 
}
<a href="/danger/" onclick="return requestDangerConfirm()"> Danger </a>

依然として存在している理由たよりドムは_

document.getElementById('href').addEventListener('click', function() { 
 
    if (confirm('Are you sure?')) { 
 
    window.location.href = '/your url to redirect/' 
 
    } else { 
 
    return false; 
 
    } 
 
})
<a href="javascript: void(0)" id="href"> Danger </a>

+0

ありがとう!それが問題でした。ただのフォローアップの質問:ここで再びJSを返すのではないのですか? JSコードを外部ファイルに完全に移動する方法はありますか? – SaAtomic

+0

はい..あなたは 'onclick()'をDomで使う必要があります。 – prasanth

関連する問題