如何检测/跟踪/检查javascript中的回传(例如,在asp.net Page.isPostBack())? 有什么建议吗?如何检测/跟踪JavaScript中的回传?
回答
ASPX:
<input type="hidden" id="_ispostback" value="<%=Page.IsPostBack.ToString()%>" />
客户端脚本:
function isPostBack() { //function to check if page is a postback-ed one
return document.getElementById('_ispostback').value == 'True';
}
PS:我没有测试过,但我已经做了财产以后前相似,它的工作原理。
作为一个问题或偏好,我添加runat =“服务器”到隐藏的输入,并在代码隐藏文件中更改它的值,但这工作得很好。我会推荐jQuery来做javascript,因为它会变成:function isPostBack(){return $(“#_ ispostback”)。val()=='true';} – 2009-12-07 03:31:40
@Shhnap:是的,我同意。对我来说只是一个懒惰的出路:P – 2009-12-07 03:34:11
为什么要插入''元素呢?你可以让isPostBack()直接返回Page.IsPostBack的值:'return <%= Page.IsPostBack%>;' – RickNZ 2009-12-07 10:23:16
如果您使用的是AJAX请求或者有一个JavaScript页面加载时读取的隐藏字段,则只能跟踪回发。否则,页面重新生成并且所有POST数据丢失;正如你所期望和希望的那样。
如下图:
<script type="text/javascript">
function invokeMeMaster() {
var chkPostBack = '<%= Page.IsPostBack ? "true" : "false" %>';
if (chkPostBack == 'false') {
alert('Only the first time');
}
}
window.onload = function() { invokeMeMaster(); };
</script>
如果要检查,如果用户点击提交按钮将当前页面是否会回传,你可以检查的ViewState的存在:
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="xxxxx" />
你可以使用像document.getElementById("__VIEWSTATE")
或jQuery等价物。
但是,如果您想查看当前页面是否生成以响应回发,那么您需要首先将该数据插入服务器端的页面。
例如:
function isPostBack() {
return <%= Page.IsPostBack %>;
}
你走了。 +1 :) – 2009-12-07 14:27:46
如果您无法访问服务器端代码并且不允许使用代码块,则会下降。 – 2017-08-08 20:11:04
奇怪的是,这并不对我的工作,但这样做:\t \t \t功能的IsPostBack(){ \t \t \t \t变种RET = '<%= Page.IsPostBack%>' == '真'; \t \t \t \t return ret; \t \t \t} – Zeek 2017-10-13 12:21:29
在某些情况下,你可能要检查的回传,没有任何服务器端代码。例如,在SharePoint中,您不能在SharePoint Designer页面中拥有代码块,因此您无法使用任何需要%=%=%的解决方案。这里不涉及服务器端代码的替代:
一个警告(或功能,这取决于你如何看待它),这将检测不只是回发,但任何情况下,其中的网页链接到自己。
由于JavaScript的不应该与服务器端的代码编写,并注入新的元素到页面看起来矫枉过正,在我看来,最简单的解决办法是[datat-*]
属性添加到<head>
元素:
Page.Header.Attributes["data-is-postback"] IsPostBack ? "true" : "false";
这可以被作为访问
$('head').data('isPostback');
香草JS: document.head.getAttribute('data-is-postback') === 'true';
当然,如果你对待[data-is-postback]
属性为布尔属性,你可以选择使用:
if (IsPostBack)
{
Page.Header.Attributes.Add("data-is-postback", "");
}
else
{
Page.Header.Attributes.Remove("data-is-postback");
}
jQuery的: $('head').is('[data-is-postback]');
香草JS:使用jQuery document.head.hasAttribute('data-is-postback')
如果你访问服务器端代码,这很好,但如果你不这样做,它会下降。有些软件甚至不允许代码块,那么就需要一个纯JavaScript解决方案。 – 2017-08-08 20:08:58
这里是解决方案:
$("a[href^='javascript:__doPostBack']").click(function() {
alert('ok');
});
我必须为我工作的解决方案。
// Postback catch
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function (s, e) {
alert("post back");
});
它仅适用于AJAX异步请求 – devi 2016-03-22 20:25:25
对你的服务器端的Page_Load: 下面使用的RegisterClientScriptBlock(),将围绕着我们的字符串所需的脚本标记
服务器端
if (Page.IsPostBack){
ClientScript.RegisterClientScriptBlock(GetType(),
"IsPostBack", "var isPostBack = true;", true);
}
然后过载在为onLoad运行的脚本中,检查是否存在该变量。
if (isPostBack){
//do something here
}
使用bodyonloadfunc去检查客户端回发
function bodyonloadfunc() {
alert("Postback");
}
考虑做出更多的扩展答案。 – Sam 2018-01-16 07:47:46
@Sam bodonloadfunc是一个JavaScript函数,它在页面回发时调用。 – 2018-01-18 11:06:34
- 1. javascript中的对象检测和跟踪
- 2. 指尖检测和跟踪
- 3. 对象检测/跟踪
- 4. 跟踪检测链表中的循环
- 5. Java中的对象检测/跟踪
- 6. 如何跟踪传出httpwebrequest
- 7. Chrome中的Javascript执行跟踪 - 如何?
- 8. 如何在Piwik中跟踪javascript事件?
- 9. HTML/Javascript:如何跟踪上传是否中止?
- 10. OpenCV:基于特征检测的对象检测和跟踪
- 11. 跟踪的JavaScript库
- 12. 如何检测和跟踪使用OpenCV的人?
- 13. 面部特征检测与跟踪
- 14. OpenCV + python红球检测和跟踪
- 15. 如何跟踪JavaScript所做的更改?
- 16. 跟踪源测试
- 17. 如何测试android引荐跟踪?
- 18. 如何跟踪性能测试
- 19. 在ASP.NET中跟踪回发
- 20. 如何跟踪用javascript选择文件?
- 21. 跟踪传入的URL
- 22. 如何检测前端回传(aspx)
- 23. ASP.NET - 如何检测部分回传?
- 24. 跟踪使用我的Javascript
- 25. 如何在跟踪js中的人脸检测后捕获图像
- 26. Flash视频中的对象跟踪/检测
- 27. Eclipse编辑器中的堆栈跟踪检测
- 28. 试图检测谷歌分析中的跟踪事件
- 29. 如何跟踪JSP
- 30. 如何跟踪PHP
你所说的 “跟踪” 是什么意思? – 2009-12-07 03:16:14