Javascript如何在用户尝试退出或刷新页面时触发函数

Javascript如何在用户尝试退出或刷新页面时触发函数,javascript,html,ajax,Javascript,Html,Ajax,当用户在阅读产品价格后试图退出页面时,我想给他们第一次折扣 如果他们选择“是”他们购买产品而不是关闭窗口,如果他们选择“否”我会打第二次折扣 这将是最后一次报价 如果他们第二次再次单击“否”,他的浏览器将 关闭,否则他将以给定的第二折扣购买产品 价格 我的示例如下所示: <script type="text/javascript"> function getOffers() { var question1 = confirm("Wait! we are now offering

当用户在阅读产品价格后试图退出页面时,我想给他们第一次折扣

  • 如果他们选择“是”他们购买产品而不是关闭窗口,如果他们选择“否”我会打第二次折扣 这将是最后一次报价

  • 如果他们第二次再次单击“否”,他的浏览器将 关闭,否则他将以给定的第二折扣购买产品 价格

  • 我的示例如下所示:

    <script type="text/javascript">
    function getOffers()
    {
      var question1 = confirm("Wait! we are now offering this Product in $25.00, buy it?");
      if(question1 == 'true')
      {
            alert('You have purchased this product for $25.00');
      }
      else
      {
            var question2 = confirm("Wait! we would like to make one Final Offer, price of Product in $15.00, buy it?");
            if(question2 == true)
            {
                  alert('You have purchased this product for $15.00');
            }
            else
            {
                  //Close this window
            }
      }
    }
    </script>
    
    
    函数getOffers()
    {
    var question1=确认(“等等!我们现在提供25.00美元的产品,买吗?”);
    如果(问题1=='true')
    {
    警报(“您购买本产品的价格为25.00美元”);
    }
    其他的
    {
    var question2=确认(“等等!我们想提供一个最终报价,产品价格为$15.00,购买吗?”);
    如果(问题2==真)
    {
    警报(“您购买本产品的价格为15.00美元”);
    }
    其他的
    {
    //关上这个窗户
    }
    }
    }
    
    我的问题是,当用户试图退出(或)刷新页面时,如何触发此功能。

    其他信息: 我已经重写了代码,并试图修复恼人的页面加载弹出窗口,有人能就此向我提出建议吗

    <script type="text/javascript">
    function getOffers()
    {
      //alert(firrsTime);
      if(firstTime == 'no')
      {
          var question1 = confirm("Wait! we are now offering this Product in $25.00, buy it?");
          if(question1 == 'true')
          {
                alert('You have purchased this product for $25.00');
          }
          else
          {
                var question2 = confirm("Wait! we would like to make one Final Offer, price of Product in $15.00, buy it?");
                if(question2 == true)
                {
                      alert('You have purchased this product for $15.00');
                }
                else
                {
                      //Close this window
                }
          }
      }
    }
    
    window.onunload = function(){
        firstTime = 'no';
        getOffers();
    }
    window.onload = function(){
        firstTime = 'yes';
        getOffers();
    }
    </script>
    
    
    函数getOffers()
    {
    //警报(第一时间);
    如果(第一次==“否”)
    {
    var question1=确认(“等等!我们现在提供25.00美元的产品,买吗?”);
    如果(问题1=='true')
    {
    警报(“您购买本产品的价格为25.00美元”);
    }
    其他的
    {
    var question2=确认(“等等!我们想提供一个最终报价,产品价格为$15.00,购买吗?”);
    如果(问题2==真)
    {
    警报(“您购买本产品的价格为15.00美元”);
    }
    其他的
    {
    //关上这个窗户
    }
    }
    }
    }
    window.onunload=函数(){
    第一次='否';
    getOffers();
    }
    window.onload=函数(){
    第一次='是';
    getOffers();
    }
    

    我试图传递一个全局变量'firstTime'来检查它是否来自onLoad然后不显示offer如果它来自onnload然后显示offer。这个问题有什么解决方案吗?

    使用onunload和onload

    window.onunload = function(){getOffers();}
    window.onload = function(){getOffers();}
    
    虽然它会在用户第一次加载页面时显示,所以我不建议这样做

    关于如何区分首次加载和刷新, 我没有尝试过,但我在某处发现了以下代码:

        function OnCrmPageLoad()
    {
       //bind to the onsave event
       crmForm.attachEvent(“onsave”,OnCrmPageSave);
    
       if (crmForm.new_ispostback.DataValue ==  true)
       {
               //form was saved
               //reset the field
                crmForm.new_ispostback.DataValue = false;
       }
    }
    
    function OnCrmPageSave()
    {
        // validate form if needed
        crmForm.new_ispostback.DataValue = event.returnValue = true;
        crmForm.new_ispostback.ForceSubmit = true;
         return true;
    }
    

    玩转它。

    使用onunload和onload

    window.onunload = function(){getOffers();}
    window.onload = function(){getOffers();}
    
    <body onunload="OnUnload()">
    
    虽然它会在用户第一次加载页面时显示,所以我不建议这样做

    关于如何区分首次加载和刷新, 我没有尝试过,但我在某处发现了以下代码:

        function OnCrmPageLoad()
    {
       //bind to the onsave event
       crmForm.attachEvent(“onsave”,OnCrmPageSave);
    
       if (crmForm.new_ispostback.DataValue ==  true)
       {
               //form was saved
               //reset the field
                crmForm.new_ispostback.DataValue = false;
       }
    }
    
    function OnCrmPageSave()
    {
        // validate form if needed
        crmForm.new_ispostback.DataValue = event.returnValue = true;
        crmForm.new_ispostback.ForceSubmit = true;
         return true;
    }
    

    玩弄它。

    我知道答案但我不会发帖,因为这种行为太邪恶/令人讨厌了,这是不是很奇怪?@jbabey:不;这样的情况是很平常的@​不要这样做。这非常烦人,会让用户对你的网站评价很低。你为什么不付钱给开发者帮你解决这个问题呢。像这样的事情让我想踢东西。我知道答案但不发帖子是不是很奇怪,因为这种行为太邪恶/令人讨厌了?@jbabey:不;这样的情况是很平常的@​不要这样做。这非常烦人,会让用户对你的网站评价很低。你为什么不付钱给开发者帮你解决这个问题呢。像这样的事情让我想踢东西。嗨,埃里克,有没有一种方法来检查功能从显示在页面加载第一次?比如在getOffers()中添加某种检查,这样用户就不会觉得它烦人了?如果我们能找到解决这个问题的方法,这将是非常棒的,并且对很多人都很有帮助。嗨,Eric,有没有一种方法可以检查第一次在页面加载时显示的功能?比如在getOffers()中添加某种检查,这样用户就不会觉得它烦人了?如果我们能找到解决这一问题的方法,那将是非常棒的,对很多人都很有帮助。
    <body onunload="OnUnload()">