Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在页面加载事件之前运行Javascript_Javascript_Asp.net - Fatal编程技术网

在页面加载事件之前运行Javascript

在页面加载事件之前运行Javascript,javascript,asp.net,Javascript,Asp.net,我有下面的JS,目前它就在我的结束体标签之前 <script type='text/javascript' src='https://www.mydomain.com/jtrack.js'></script> <script type='text/javascript' > if (typeof trackPage == 'function') trackPage(); </script> if(typeof trackPage=='funct

我有下面的JS,目前它就在我的结束体标签之前

<script type='text/javascript' src='https://www.mydomain.com/jtrack.js'></script>
<script type='text/javascript' >
if (typeof trackPage == 'function') trackPage();
</script>

if(typeof trackPage=='function')trackPage();
这个脚本的一部分设置了一个cookie,我需要在asp.net页面的页面加载事件中读取它。但该事件是在设置cookie之前触发的。如何更改此设置以使脚本首先运行


谢谢

简单的回答,你不能。这在技术上是不可能的

如果您查看,那么您将看到页面加载事件发生在页面开始呈现之前-这将使客户端完全不可能在页面上执行JavaScript,此时,用户代理(浏览器)甚至还没有开始接收页面。除了卸载之外,所有ASP.NET页面生命周期事件都发生在服务器上,并且在向用户发送任何响应之前

卸载事件不太可能在JavaScript之后执行,除非您将响应流式传输给用户,在页面上的第一个可能点具有JavaScript(没有依赖项),并且正在构建一个非常复杂的页面响应。即使JavaScript在unload事件触发之前以某种方式执行了,这也无关紧要,因为cookie是随页面请求一起发送的,而且已经发生了。cookie在该域的下一个请求之前不会被发送(尽管它不一定是被请求的页面,但图像、脚本或样式表请求都将在其请求头中包含cookie)

您可以让JavaScript在第一个请求上设置cookie,然后加载事件处理程序中的所有后续请求都可以使用cookie,并使用Ajax请求(如有必要)记录该初始页面和分配的cookie值,该值将在Ajax请求的头中发送(假设已在该点设置)


您不能做的是在用户访问您的站点之前在用户的浏览器上设置cookie,在发送给用户之前执行JavaScript,或者通过响应部分发送新的请求数据。

简单回答,您不能。这在技术上是不可能的

如果您查看,那么您将看到页面加载事件发生在页面开始呈现之前-这将使客户端完全不可能在页面上执行JavaScript,此时,用户代理(浏览器)甚至还没有开始接收页面。除了卸载之外,所有ASP.NET页面生命周期事件都发生在服务器上,并且在向用户发送任何响应之前

卸载事件不太可能在JavaScript之后执行,除非您将响应流式传输给用户,在页面上的第一个可能点具有JavaScript(没有依赖项),并且正在构建一个非常复杂的页面响应。即使JavaScript在unload事件触发之前以某种方式执行了,这也无关紧要,因为cookie是随页面请求一起发送的,而且已经发生了。cookie在该域的下一个请求之前不会被发送(尽管它不一定是被请求的页面,但图像、脚本或样式表请求都将在其请求头中包含cookie)

您可以让JavaScript在第一个请求上设置cookie,然后加载事件处理程序中的所有后续请求都可以使用cookie,并使用Ajax请求(如有必要)记录该初始页面和分配的cookie值,该值将在Ajax请求的头中发送(假设已在该点设置)


您不能做的是在用户访问您的站点之前在用户的浏览器上设置cookie,在发送给用户之前执行JavaScript,或者通过响应部分发送新的请求数据。

简单回答,您不能。这在技术上是不可能的

如果您查看,那么您将看到页面加载事件发生在页面开始呈现之前-这将使客户端完全不可能在页面上执行JavaScript,此时,用户代理(浏览器)甚至还没有开始接收页面。除了卸载之外,所有ASP.NET页面生命周期事件都发生在服务器上,并且在向用户发送任何响应之前

卸载事件不太可能在JavaScript之后执行,除非您将响应流式传输给用户,在页面上的第一个可能点具有JavaScript(没有依赖项),并且正在构建一个非常复杂的页面响应。即使JavaScript在unload事件触发之前以某种方式执行了,这也无关紧要,因为cookie是随页面请求一起发送的,而且已经发生了。cookie在该域的下一个请求之前不会被发送(尽管它不一定是被请求的页面,但图像、脚本或样式表请求都将在其请求头中包含cookie)

您可以让JavaScript在第一个请求上设置cookie,然后加载事件处理程序中的所有后续请求都可以使用cookie,并使用Ajax请求(如有必要)记录该初始页面和分配的cookie值,该值将在Ajax请求的头中发送(假设已在该点设置)


您不能做的是在用户访问您的站点之前在用户的浏览器上设置cookie,在发送给用户之前执行JavaScript,或者通过响应部分发送新的请求数据。

简单回答,您不能。这在技术上是不可能的

如果您查看,那么您将看到页面加载事件发生在页面开始呈现之前-这将使客户端完全不可能在页面上执行JavaScript,此时,用户代理(浏览器)甚至还没有开始接收页面。除卸载外,所有
ScriptManager.RegisterStartupScript(this, this.GetType(), "TestMessageModal", string.Format("setTimeout(function(){{swal('{0}','{1}');}},{2});", type, CommonUtils.RemoveSpecialCharacters(Message), timeout), true);