原文地址: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上在運營商或者是什麼地方給屏蔽了一些東西,才使頁面不會生成這個方法的。
若是說是瀏覽器問題那能夠排除了,由於我能測試的都測試了,
這問題也不是所有都有,就是有那麼幾個用戶的電腦。
。。。。。。。。