2013-08-02 2 views
5

Ich hatte die Frage früher gepostet und beantwortet. WebResource.axd not working with Internet Explorer 11
Aber ich dachte, der Hotfix hatte das Problem behoben (CrossPostback, AJAX Controls und ASP.NET generierte Postbacks funktioniert nicht), aber nach der Installation in QA, hat es nicht funktioniert und wir haben festgestellt, dass .NET 4.5 die Dinge funktionierte.
Ich bin gerade dabei, den .NET Framework-Ordner zwischen .NET 4 und .NET 4.5 zu vergleichen. Was ich fragen musste, was in .NET 4.5 wirklich das IE 11 Problem lösen könnte.
Die Hauptänderung in IE 11 ist die User-Agent-Zeichenfolge. Welche spezielle Korrektur in .NET 4.5 hätte die Unterschiede zwischen ASP.NET 4.0 und IE 11 beheben können.
Das manuelle Zusammenführen der Unterschiede hilft möglicherweise nicht wirklich, da in Zukunft eine Sicherheit/ein Hotfix in .NET 4.0 installiert wird überschrieben
Ein weiterer Heads-up, das Problem ist für IE 11 in Windows 7,8,8.1 Jede Hilfe oder Anregungen.
UPDATE: Wir haben versucht, nur die Browser-Definitionen von .NET 4.5 in .NET 4.0, aber immer noch das Problem bleibt so abgesehen von den Definitionen gibt es einige Bibliotheken, die Dinge machen Registrierung 11.CrossPostback, AJAX-Steuerelemente und ASP.NET-generierte Postbacks funktionieren für .NET 4.5, nicht .NET 4.0 in IE 11

+0

Es geht nicht um "Bibliotheken", es geht um die UA-Zeichenfolge und deren Interpretation. Hast du diesen hier installiert? http://support.microsoft.com/kb/2836947 – EricLaw

+0

Ich habe alle Hotfixes für installiert "Skript Fehler aufgetreten", "'__doPostBack' ist undefined" für. NET 4.0 –

+0

Ich versuche, die Webseite in IE 11 zuzugreifen + Windows 8.1.Ich bekomme eine leere Seite.Seems Java-Skript wird nicht unterstützt, da dieses Problem.irgendeiner Vorschlag –

Antwort

14

in IE arbeiten wir eine hatten ähnliches Problem, bei dem das automatische Postback für eine DropDownList nicht mehr mit neueren Versionen von IE funktioniert. Wir bemerkten es zuerst mit IE10 und verfolgten es auf den Browserdefinitionsfehler, den viele kennen und der unter anderem here detailliert ist.

Für diese spezielle Anwendung und den Satz von Boxen, auf denen die verschiedenen Umgebungen ausgeführt wurden/läuft, war eine Aktualisierung auf Version 4.5 keine kurzfristige Option. Darüber hinaus haben die im obigen Post beschriebenen maschinenweiten Fixes beim Versuch, sie zu installieren, einen Fehler verursacht. Die siteweite Korrektur hat jedoch den Zweck erfüllt.

Eine oder zwei Wochen später passierte jemand zufällig die Seite mit IE11 Preview, und da war das Problem wieder. Wir haben weitere Nachforschungen angestellt und festgestellt, dass die Browserdefinition "IE10Plus" aus dem standortweiten Fix - die das IE10-Problem tatsächlich behoben hat - für IE11 nicht funktionieren würde. Um IE10 zu identifizieren, wurde eine Majorversion-Regex-Übereinstimmung hinzugefügt - "\ d {2,}" - die zwei Ziffern entsprach (im Gegensatz zu den vorherigen Übereinstimmungen, die entlang der Linien von "^ 9 $" - genau mit "9" übereinstimmten) IE10 hat jetzt funktioniert. Das Problem ist, dass die IE10Plus-Definition (und jede IE-Definition davor) letztendlich von der "IE" -Definition abgeleitet wurde und diese Definition auch benötigte, dass die UA-Zeichenkette "MSIE" enthielt (unter anderem) und ab IE11 " MSIE "ist nicht länger Teil der UA-Zeichenfolge.

"IE10Plus" sollte wirklich "IE10" heißen.

Angesichts der Tatsache, dass wir in naher Zukunft nicht auf 4.5 upgraden konnten, mussten wir eine andere Lösung finden. Und die, auf die wir stießen, war, unsere eigene IE11-Browserdefinition zu erstellen. Wir konnten keine Fähigkeiten definieren, die über das hinausgehen, was wir in IE10 gesehen haben, aber das war ziemlich nah und es würde zumindest den Browser identifizieren (und die Funktionalität nicht beeinträchtigen, wie es gerade geschah).

Die Leute werden Ihnen sagen, dies nicht zu tun, aber für einige (wie wir) bietet es eine temporäre Lösung, bis eine endgültige Lösung kommt.

Ich weiß nicht, in welcher Weise 4.5 soll das beheben. Ich habe mir die Browserdefinitionsdateien angeschaut und sehe keinen Weg, IE11 zu identifizieren (ohne "MSIE" in seiner UA-Zeichenkette), aber vielleicht gibt es irgendwo einen zusätzlichen Fix, der irgendwo in einer DLL vergraben ist.

In jedem Fall, hier ist die Definition, die wir erstellt und für uns, löste es das Problem sofort.

Fügen Sie Ihrem Projekt App_Browser/ie hinzu (oder erstellen Sie es als).Browser, die folgenden:

<!-- Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko --> 
<browser id="IE11Preview" parentID="Mozilla"> 
    <identification> 
     <userAgent match="Trident/(?'layoutVersion'\d+).*rv:(?'revision'(?'major'\d+)(\.(?'minor'\d+)?))" /> 
     <userAgent nonMatch="MSIE" /> 
    </identification> 

    <capabilities> 
     <capability name="browser"    value="IE" /> 
     <capability name="layoutEngine"   value="Trident" /> 
     <capability name="layoutEngineVersion" value="${layoutVersion}" /> 
     <capability name="isColor"    value="true" /> 
     <capability name="screenBitDepth"  value="8" /> 
     <capability name="ecmascriptversion" value="3.0" /> 
     <capability name="jscriptversion"  value="6.0" /> 
     <capability name="javascript"   value="true" /> 
     <capability name="javascriptversion" value="1.5" /> 
     <capability name="w3cdomversion"  value="1.0" /> 
     <capability name="ExchangeOmaSupported" value="true" /> 
     <capability name="activexcontrols"  value="true" /> 
     <capability name="backgroundsounds"  value="true" /> 
     <capability name="cookies"    value="true" /> 
     <capability name="frames"    value="true" /> 
     <capability name="javaapplets"   value="true" /> 
     <capability name="supportsCallback"  value="true" /> 
     <capability name="supportsFileUpload" value="true" /> 
     <capability name="supportsMultilineTextBoxDisplay" value="true" /> 
     <capability name="supportsMaintainScrollPositionOnPostback" value="true" /> 
     <capability name="supportsVCard"  value="true" /> 
     <capability name="supportsXmlHttp"  value="true" /> 
     <capability name="tables"    value="true" /> 
     <capability name="supportsAccessKeyAttribute" value="true" /> 
     <capability name="tagwriter"   value="System.Web.UI.HtmlTextWriter" /> 
     <capability name="vbscript"    value="true" /> 
     <capability name="revmajor"    value="${major}" /> 
     <capability name="revminor"    value="${minor}" /> 
    </capabilities> 
</browser> 

Wenn Sie eine bestehende Datei hinzufügen, sucht id = „IE10Plus“ - Sie wollen, dass = „IE10“ zu id ändern, wie das „Plus“ Teil nicht ist länger genau.

Wie gesagt, wenn Sie zu 4.5 gehen, und es behebt Ihr Problem - großartig. Wenn Sie dies nicht können oder nicht, könnte dies Sie aufhalten, bis Sie es können (oder bis eine andere Lösung hinzukommt).

+1

Dank Michael, habe es nicht versucht, wird sicherlich tun und lassen Sie es wissen. –

+1

FWIW, Ich habe gerade einen anderen Server mit 4.5 und es funktioniert perfekt mit IE11. Die Browserdefinitionen sind sinnvoll und - "vorrätig" - sind dem vorzuziehen, denke ich. – Michael

+1

Ich führe eine Site unter Windows Server 2003 aus und kann kein Upgrade auf .NET 4.5 durchführen, ohne auf einen neuen Server umzusteigen. Als IE10 veröffentlicht wurde, habe ich das Problem gelöst, indem ich Scott Hanselmans NuGet-Paket installiert habe, das ie.browser und firefox.browser zum Ordner App_Browser hinzufügt. Ich habe versucht, Ihre IE11Preview-Definition zu der ie.browser-Datei hinzuzufügen und die Site neu gestartet, aber es funktioniert immer noch nicht mit IE 11 Preview (Windows 8.1). Irgendwelche Ideen? – Adhooo

1

hi versuchen Sie das folgende Skript Es könnte Ihnen helfen.

<script type="text/javascript"> 
Sys.WebForms.PageRequestManager.getInstance()._origOnFormActiveElement = Sys.WebForms.PageRequestManager.getInstance()._onFormElementActive; 
Sys.WebForms.PageRequestManager.getInstance()._onFormElementActive = function (element, offsetX, offsetY) { 
if (element.tagName.toUpperCase() === 'INPUT' && element.type === 'image') { 
offsetX = Math.floor(offsetX); 
offsetY = Math.floor(offsetY); 
} 
this._origOnFormActiveElement(element, offsetX, offsetY); 
}; 
</script> 
Verwandte Themen