原文地址:http://www.sufeinet.com/thread-4564-1-1.htmljavascript
这个问题我相信有很多人见过,就是使用系统的分页功能时,或者是使用系统控件,都会有一个回发的功能,html
这个功能是asp.net自动管理的,就是为了和咱们后台的Cs代码链接起来,java
可是有时候这个方法并不会生成,正常状况下在页面的Form下面都会生成以下代码浏览器
<script type="text/javascript"> //<![CDATA[ var theForm = document.forms['form1']; if (!theForm) { theForm = document.form1; } function __doPostBack(eventTarget, eventArgument) { if (!theForm.onsubmit || (theForm.onsubmit() != false)) { theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value = eventArgument; theForm.submit(); } } //]]> </script>
可是我发如今一些电脑上,也不知道是什么状况就是没有这两个方法,而后就单击按钮或者是分页时就提示以下asp.net
这很明显就是 __doPostBack方法不存在,post
我就奇怪了,为何呢?测试
并且在这个电脑上的全部浏览器都有同样,IE678 火狐,Google,等都是一样的效果。spa
着实让人郁闷,因此来博客园请教一下你们看看这种问题应该怎么解决了,.net
我到是想到一个比较次的方法,只能是在没有找到解决方案以后应的急code
代码以下
<script type="text/javascript"> function SetdoPostBack() { var html = document.body.innerHTML; if (html.toLowerCase().indexOf("dopostback") < 0) { var sb = "<script type=\"text/javascript\">"; sb = sb + "//<![CDATA["; sb = sb + "var theForm = document.forms['form1'];"; sb = sb + "if (!theForm) {"; sb = sb + " theForm = document.form1;"; sb = sb + "}"; sb = sb + "function __doPostBack(eventTarget, eventArgument) {"; sb = sb + " if (!theForm.onsubmit || (theForm.onsubmit() != false)) {"; sb = sb + " theForm.__EVENTTARGET.value = eventTarget;"; sb = sb + " theForm.__EVENTARGUMENT.value = eventArgument;"; sb = sb + " theForm.submit();"; sb = sb + " }"; sb = sb + "}"; sb = sb + "//]]>"; sb = sb + "<\/script>"; document.write(sb);//你们不要管这个,这只是一个输出,正常状况下我是添加到一个Div里的,这里是为了方便查看 } } setTimeout('SetdoPostBack()', 2000);//2秒以后开始检查
上面的方法要用的话还须要加上两个属性不光是这两个方法没有生成,
__VIEWSTATE等几个hidden控件,由于这个是自动生成的。可这些的生成规则实在是很差处理,不过我发现只要VIEWSTATE有的话另外的两个,只要是生成了,值为Null也不会影响的。
不过这也只是应个急。
尚未想到更好的办法。
但愿你们帮忙啊。
根据个人分析,会不会是在某些Ip上在运营商或者是什么地方给屏蔽了一些东西,才使页面不会生成这个方法的。
若是说是浏览器问题那能够排除了,由于我能测试的都测试了,
这问题也不是所有都有,就是有那么几个用户的电脑。
。。。。。。。。