Javascript函数使用后面的代码调用onPageLoad而不是onClick

Javascript function using code behind called onPageLoad instead onClick

本文关键字:onPageLoad 调用 onClick 代码 函数 Javascript      更新时间:2023-09-26

我有一个HTML按钮,onClick应该调用两个函数:

<input id="btnLogout" onclick="test();SaveAndNavigate('logoff.aspx');" type="button">

在函数test()中,我只需要在.txt文件(在服务器端)中写入/追加用户名。txt文件是一个日志文件,我想要跟踪当前用户何时注销。

功能测试为:

function test()
{
<%
   LogUserSession("User: "+ System.Web.HttpContext.Current.ApplicationInstance.Session.SessionID.CurrentUser +" logged out on: " + System.DateTime.Now );
%> 
}

当我用按钮加载页面时,该函数在pagload而不是onClick事件时立即执行。由于我需要实现的是已经全部实现的codeBehind功能"LogUserSession",我想避免不得不开发jQuery Ajax web服务或其他解决方案,如果可能的话。

否则我怎么能从javascript附加文本信息到现有的。txt文件?

您的LogUserSession()是一个服务器端函数,当您的页面(包含您提供的摘录)在服务器端生成时执行。它不是作为页面的onPageLoad事件的一部分执行的(即在客户端)。

基本上你想要的是从logoff.aspx调用LogUserSession()函数。

如果您的SaveAndNavigate()函数工作,那么这应该是您在btnLogout中所需要的。如果不想使用AJAX进行调用,则需要有一个提交到logoff.aspx的表单。或者甚至只是一个链接到它,如果它处理GET请求。

如果我理解正确,这是一个服务器端功能,你想运行。来自客户端,但由于服务器在将代码发送到浏览器之前对其进行了解析,因此在页面到达浏览器之前就发生了。我认为ajax是你最好的选择。

<% %>之间的代码在生成页面时在服务器上运行。这实际上发生在浏览器事件获取page之前。

我建议您将登出的登录移到"注销"中。aspx页面"。

一种方法是(未验证):

1)创建一个名为Logout的页面。在页面加载事件中调用/实现LogUserSession方法的功能。

2)在页面上添加一个img元素,宽度=0,高度=0

3)在测试javascript函数中,将img的src属性分配给Logout.aspx.

即:

<img id="logoutImg" width=0 height=0 style="display:none"/>
.
.
.
function test(){
 document.getElementById("logoutImg").src = ("Logout.aspx?_rnd" + new Date());
}