这是母版页代码:
<head runat="server">
<title></title>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
<script>
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
}
function showPosition(position) {
document.getElementById("Long").value = position.coords.longitude;
document.getElementById("Lat").value = position.coords.latitude;
}
}
</script>
</head>
<body onload="getLocation()">
<form id="form1" runat="server">
<div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
<input type="hidden" id="Long" name="Long" value="" runat="server" />
<input type="hidden" id="Lat" name="Lat" value="" runat="server" />
</form>
</body>
这是服务器端页面加载代码:
Context.Response.Write(((HtmlInputHidden)Page.Master.FindControl("Long")).Value)
我在加载后检查了这些dom elments,这就是我所看到的:
<input name="ctl00$Long" type="hidden" id="Long" value="34.7574951">
<input name="ctl00$Lat" type="hidden" id="Lat" value="32.003683900000006">
但是当T尝试如上所示检索它们时(C#pageload)我得到字符串为空。
答案 0 :(得分:1)
服务器端首先执行,然后将生成的标记发送到客户端,其中运行任何客户端脚本。因此,您对执行顺序的想法是错误的。
在这种情况下,您需要使用AJAX或其他一些技巧,例如web sockets或SignalR。