asp.net mvc(C#)アプリケーションのglobal.asaxのApplication_Startからjavascript関数を呼び出すか作成する方法は?
4 に答える
セッションまたはCookieで最後に「呼び出された」時間を覚えておくことができます(これはjavascriptの場合は簡単ですが、パフォーマンスなどの場合は悪くなります)。
function check() {
// or var lasttime = <%= Session["lasttime"] %>;
if (now - $.cookie("lasttime") > timeout)
{
$.cookie("lasttime", now);
performAction();
}
window.setTimeout(check, 1000);
}
$(document).ready()からtime関数を1回呼び出すことができます。
ただし、ブラウザがページをレンダリングするのに数秒かかる場合や、404やその他のエラーが発生してページが非アクティブになる場合があることに注意してください... javascriptは、スケジュールされたアクションを実行するための信頼できる方法ではありません。
もう1つの方法は、サーバーにタイマーを設定することです。上記のようなJavaScript関数は、ユーザーIDなどを渡して、時々それを要求します。これにより、ページのリロード中にタイマーがリセットされるのを防ぐことができます。しかし、あなたはあまりにも頻繁に要求をしなければならないでしょう。したがって、最善の解決策は、次の2つの手法を組み合わせることです。
- サーバーでタイマーを実行する
- ページがレンダリングされるとき、var inited=false;を設定します。
- 上記の関数を実行しますが、次のようになります。if(!inited)timer = $ .getJSON( "/ timer?uid = x"); また、正確な現在のタイマーがある場合は、サーバーの要求なしでJavaScriptのみを続行できます。
「javascript関数は、jqueryを介してデータベースからユーザーに表示されるデータを取得します。javascript関数は、setTimeoutを使用して定期的に実行されます。」
これはそれを行う場所ではありません。
マスターページの使用について考えたことはありますか?
JavaScriptはクライアント側で実行され、global.asaxはサーバー側で実行されるため。それをしてはいけない。
ランディングページのロード時にアプリケーションレベルの変数をチェックし(マスターページも同様です)、そこにJavaScriptを登録して、変数を設定してはどうでしょうか。
変数が設定されている場合は、登録をスキップできます。