__doPostBack is undefined on DotNetNuke website fo

2019-02-21 15:15发布

问题:

I have a DotNetNuke site, and today a customer called in and said it wasn't working on IE 10. Specifically the login and register links weren't working, but they do in compatibility mode. I took a look on our test windows 8 machine and saw that it was failing because __doPostBack was undefined. I've been searching for a fix for the last 6ish hours, and what I've been able to find is that apparently the IE10 user agent is covered in the ie.browser file and that I should install this hotfix and reboot the server. That didn't work. I haven't noticed any changes, even though I think the new ie.browser file should match the new user agent.

What other steps can I take to fix the problem? Note: the server is running .NET 3.5 with service pack 1 on Windows server 2003. The site is running DotNetNuke 05.06.02. Any suggestions would be greatly appreciated.

回答1:

See this post by Scott Hanselman:

"Bug and Fix: ASP.NET fails to detect IE10 causing _doPostBack is undefined JavaScript error or maintain FF5 scrollbar position"



回答2:

On my production site I tried a few things and they didn't work.

I installed the hotfix and rebooted - no good

I copied over the updated ie.browser file - no good

I tried modifying the default.browser, the ie.browser, and the mozilla.browser files to enable javascript for everything - no good.

One thing I did that finally made it work (and this should work for EVERYTHING) is in the InitializePage function of the Default.aspx.vb file, I added this line to the start of the subroutine

Page.ClientTarget = "uplevel"

That should (from what I understand) treat ALL browsers as if they can handle javascript and cookies and all that other stuff we need. I feel like that's a pretty safe bet.



回答3:

There's another config that if exist in web.config overrides Scott Hanselman's proposed fixes:

<browserCaps>

ASP.NET browser capability sniffer could be configured in 3 ways (overrides each other):

  1. Machine wide in <windir>\Microsoft.NET\Framework\<ver>\CONFIG\Browsers
  2. Site only by using .browser files in App_Browsers folder
  3. Site only by using <browserCaps> Element in web.config

for IE10 add the following case under <browserCaps> <case "Mozilla .. MSIE ..> :

<case match="\d{2,}" with="${version}">
  frames=true
  tables=true
  cookies=true
  backgroundsounds=true
  vbscript=true
  javascript=true
  javaapplets=true
  activexcontrols=true
  tagwriter=System.Web.UI.HtmlTextWriter
  ecmascriptversion=3.0
  msdomversion=${major}${minor}
  w3cdomversion=1.0
  css1=true
  css2=true
  xml=true

  <filter with="${letters}" match="^b">
    beta=true
  </filter>
  <filter with="${extra}" match="Crawler">
    crawler=true
  </filter>
</case>