2017-08-11 636 views
4

我有一個簡單的表單按鈕和一個GridView。當用戶點擊按鈕時,他們的名字和他們點擊的時間被記錄下來。我使用元標記每30秒刷新一次頁面。它在IE,Chrome和Firefox中運行良好,但在Edge瀏覽器刷新時可以讓用戶每次重新提交重新提交併重新提交併重新登錄。在Edge瀏覽器中重新提交表單

<meta http-equiv="refresh" content="30" /> 
    <form id="form1" runat="server">  
    <asp:Button ID="btnSave" runat="server" Text="Pick Up"/> 
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"> 
     <Columns> 
      <asp:BoundField DataField="PLUSER" HeaderText="User" S 
      SortExpression="name" ItemStyle-Width="100px" /> 
      <asp:BoundField DataField="PLDATE" HeaderText="Date" 
      SortExpression="timeDate" ItemStyle-Width="250px" /> 
     </Columns> 
    </asp:GridView> 
    </form> 

是否有關於元標記的設置或邊緣特殊?

+0

如果你只是想自己回答這個問題,提供賞金的意義何在? – Nkosi

+0

希望別人會知道爲什麼meta標籤不起作用,但把我們最終使用的東西。永遠不可能讓元刷新工作計時器更像是一項工作,如果其他人想出元想給他們的賞金。 – Scath

+0

好吧有道理。我很好奇。 – Nkosi

回答

1

如果有人計算出,爲什麼meta標籤的邊緣失敗...

我已經找到了META標籤在Edge瀏覽器中無法使用的原因很少。

  1. 安全設置:

有Internet Explorer中的安全設置不允許meta標籤刷新。它位於安全選項卡下,然後選擇自定義級別和雜項下的元標記刷新。如果這被禁用,它將停止元刷新工作。

  • 這可能需要您指定內容的網址:

    <元HTTP的當量= 「刷新」 內容= 「30; URL = http://www.Stackoverflow.com」 >

  • META標記不是一個空標記,並且在HTML中沒有結束標記,只能在XHTML中使用。

  • 所以HTML:

    <meta http-equiv="refresh" content="30"> 
    

    XHTML:

    <meta http-equiv="refresh" content="30"> </meta> 
    

    Ref


    恐怕即使它仍然在邊緣不會工作,所有這些可能的解決方案。 一個很好的解決方法是使用漸進增強,就像你用腳本管理器完成的,另一種方法是直接在這裏使用Javascript:https://davidwalsh.name/meta-refresh-javascript

    <script> 
        ESPN_refresh=window.setTimeout(function(){window.location.href=window.location.href},900000); 
    </script> 
    <noscript> 
        <meta http-equiv="refresh" content="900" /> 
    </noscript> 
    

    使用JavaScript作爲你的自動頁面刷新主要手段和META標籤作爲你的後備。

    +0

    第二種解決方案的工作原理是將URL添加到元標記中,但要離開計時器。 – Scath

    2

    爲了解決這個問題,所有瀏覽器都使用了asp.net計時器,而不是元標記,它可以在邊緣以及其他瀏覽器中工作。

    HTML

    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>   
        <asp:Timer ID="Timer1" runat="server"></asp:Timer> 
    

    Vb.Net

    Dim MinuteCount = 0 
    Dim x = "off" 
    Dim count As Integer = 0 
    
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
        If (Not IsPostBack Or x = "off") Then 
         MinuteCount = 0 
         Timer1.Interval = 60 * 500 
         Timer1.Enabled = True 
         x = "on" 
        End If  
    End Sub 
    
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick 
        x = "off" 
        Label1.Text = "Checked at: " & DateTime.Now() 
        checkData() 
    End Sub 
    
    相關問題