ホームページ > ウェブフロントエンド > jsチュートリアル > js関数におけるonmousedownとonclickの違いと関連性についての考察_基礎知識

js関数におけるonmousedownとonclickの違いと関連性についての考察_基礎知識

WBOY
リリース: 2016-05-16 17:33:38
オリジナル
1841 人が閲覧しました

どちらのイベントも共通です。
これら 2 つのイベントの違いを理解しますが、実際にはこれら 2 つのイベントの違いを使用して一部の操作を実行することはありません。
通常、onclick を使用する場合は onmousedown も使用できますが、onclick を使用する場合の方が多くなります。
今日はonmousedownを使わなければいけない場面に遭遇したので、ここに記録しておきます。

最初に違いについて話しましょう : onclick は、マウス クリックのバウンス後にトリガーされるイベントです。 onmousedown は、マウスが押された後にトリガーされるイベントです。
単に onclick = onmousedown onmouseup; と言うだけです。
ある場所でマウスを押してからマウスを移動し、別の場所でマウスを放すと、onmousedown イベントはトリガーされますが、onclick イベントはトリガーされません。
今日実装したい関数は、a タグをクリックして別のページに切り替えることです。元のページが閉じる前に関数をトリガーする必要があります。ウィンドウアンロードではありません。
onclick イベントは以前に使用されており、IE でテストした場合は問題ありませんでしたが、FF でテストした場合、ページが破棄される前にこの関数を実行する時間がないことがわかりました。
onmousedown イベントを使用すると、関数が実行されることを保証する方法はありませんが、マウスが跳ね上がった後にジャンプが実行されるため、関数の実行に一定の時間を稼ぐことができます。

解決策 1: onclick="return test()"、関数が true を返した場合にのみジャンプが実行されます。これは新たな問題を引き起こします。テスト関数内でマルチスレッドプログラムや新しくオープンしたスレッドプログラムを実行すると、最初に true を返してジャンプし、新しくオープンしたスレッドは実行されません。たとえば、次の関数:

コードをコピー コードは次のとおりです:

関数テスト()
{
(new Image()).src="1.html";
window.open("1.html","_new");
//alert(" ok");
return true;
}

1.html ファイルで を設定しました。 1.html はそうではありません。ジャンプは完全にレンダリングされる前に実行されています。新しいイメージ関数が実行されたことは保証されません。
単一スレッドを使用して関数を実行する場合、return test() メソッドを使用できます。

解決策 2: テスト関数のマルチスレッド関数の最大実行速度を見積もり、実行時間を 100 に加算します。 a タグ内でジャンプを使用しないでください。テスト関数で setTimeout(location.href="1.html",100) を使用してジャンプを実行します。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート