【问题标题】:Pass window.SessionTimeout script to js file将 window.SessionTimeout 脚本传递给 js 文件
【发布时间】:2014-05-16 21:26:04
【问题描述】:

我正在做一个 MVC 应用程序。这是在我的 _Layout.cshtml

我需要将它移动到一个 js 文件中

<script type="text/javascript">
window.SessionTimeout = (function() {
    var _timeLeft, _popupTimer, _countDownTimer;

    var stopTimers = function() {
        window.clearTimeout(_popupTimer);
        window.clearTimeout(_countDownTimer);
    };

    var updateCountDown = function() {
        var min = Math.floor(_timeLeft / 60);
        var sec = _timeLeft % 60;
        if(sec < 10)
            sec = "0" + sec;

        document.getElementById("CountDownHolder").innerHTML = min + ":" + sec;

        if(_timeLeft > 0) {
            _timeLeft--;
            _countDownTimer = window.setTimeout(updateCountDown, 1000);
        } else  {
            document.location = "Home/TimeOutPage";
        }            
    };

    var showPopup = function() {
        _timeLeft = 60;
        updateCountDown();
        ClientTimeoutPopup.Show();
    };

    var schedulePopup = function() {
        stopTimers();
        _popupTimer = window.setTimeout(showPopup, @PopupShowDelay);
    };

    var sendKeepAlive = function() {
        stopTimers();
        ClientTimeoutPopup.Hide();
        SessionTimeout.schedulePopup();
    };

    return {
        schedulePopup: schedulePopup,
        sendKeepAlive: sendKeepAlive
    };

})();    

我尝试只复制脚本标签之间的代码,但它不起作用。我知道问题出在函数签名上

window.SessionTimeout = (function() { ...

但我不知道如何在 js 文件中使用 window.SessionTimeout

@PopupShowDelay 在我看来是这样定义的:

       @functions { 
        public int PopupShowDelay
        {
            get { return 60000 * (Session.Timeout - 1); }
        }
    }

更新

好的,我发现了错误。 问题是变量

@PopupShowDelay

我在 view 中定义了它,并试图读取 .js 文件。

所以,我要检查一下: Passing parameters to JavaScript files

谢谢!!

【问题讨论】:

  • 您可以照原样复制它。为什么你认为它不起作用?
  • 是的,我就是这么想的。但我不工作。不知道为什么

标签: javascript asp.net-mvc view


【解决方案1】:

嵌套函数中的this 上下文可能存在问题。 You can read more here

【讨论】:

    【解决方案2】:

    如果您将文件链接到模板文档正文末尾的脚本标记中并且文件正在正确加载(如果您的代码已执行,请使用 console.log 测试),您的代码应该可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-23
      • 1970-01-01
      相关资源
      最近更新 更多