我有一个网站,当一个人去它时,它会检查数据库上的时间戳。如果时间戳超过4小时,则会打开一个弹出窗口,该窗口运行更新数据库的数据库导入/更新子。然后关闭自己。
这样做的原因是它允许浏览者继续他们的业务,而单独的窗口负责更新。
现在这个弹出窗口显示为焦点。 有没有办法让弹出窗口加载到当前浏览器窗口后面,以免入侵用户导航?
这是主窗口的page_load
子。
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Dim connStr As String = ConfigurationManager.ConnectionStrings("SNA_TRT").ConnectionString
Dim sqlConn As SqlConnection
sqlConn = New SqlConnection(connStr)
sqlConn.Open()
Dim strSQL As String = "SELECT TOP 1 [ID], [LASTREFRESH], [BYWHO] FROM [TRT_db_timer] ORDER BY [ID] Desc "
Dim cmd As New SqlCommand(strSQL, sqlConn)
Dim dr As SqlDataReader = cmd.ExecuteReader()
Dim lastupdate As DateTime
Dim currenttime As DateTime = Now()
While dr.Read()
lastupdate = Convert.ToDateTime(dr(ClearNullDs("LASTREFRESH")))
End While
dr.Close()
sqlConn.Close()
Dim ts As TimeSpan = currenttime.Subtract(lastupdate)
Dim dbspan As String = ts.TotalMinutes.ToString()
Dim dsinceup As Integer = ts.Days.ToString + 1
'MsgBox(lastupdate)
'MsgBox(currenttime)
'MsgBox(dbspan)
If dbspan > 240 Then
bodytag.Attributes.Add("onload", "window.open('/trt/admin/importnotice.aspx?DAYS=" & dsinceup & "',null,'height=150, width=350,status=yes, resizable=no, scrollbars=no, toolbar=no,location=no,menubar=no ');")
End If
End If
End Sub
答案 0 :(得分:3)
肯定有更好的方法(比如ajax)。
但要回答你的问题:
function loadpopunder(){
var popunder=window.open(/* popup window parameters */);
popunder.blur();
window.focus(); // focuses the main window.
}
答案 1 :(得分:1)
如果您希望在用户到达网站时进行更新,请使用AJAX或隐藏的iframe。如果您希望每X小时更新一次,无论用户是否访问该站点,请使用CRON作业。弹出一个窗口来执行此操作会使用户恶化。