2014-09-15 10 views
9

Ich habe Javascript-Fehler mit TWebbrowser aufgrund der Tatsache, dass TWebbrowser im IE7-Kompatibilitätsmodus ausgeführt wird.Wie funktioniert die Delphi TWebbrowser-Komponente im IE9-Modus?

Gibt es eine Möglichkeit, dies zu verhindern und nur im IE9-Modus laufen zu lassen?

+1

möglich Duplikat [Wie schalte ich die Kompatibilitätsansicht auf dem IE Webbrowsercontrol in einem WinForms App?] (Http://stackoverflow.com/questions/6717055/how-doi-ihr-turn-off-compatibility-view-on-the-ie-webbrowsercontrol-in-a-winforms-a) – whosrdaddy

+0

Betrachten Sie nicht Sich auf die richtige Version von IE zu verlassen, indem man etwas wie Chromium Embedded (Nachschlagen DCEF) verwendet. –

+0

@ThijsvanDien: Guter Punkt, aber mit DCEF müssen Sie externe DLLs versenden, die nicht immer gewünscht sind. – whosrdaddy

Antwort

9
  1. Aktivieren Sie die browser emulation feature using the documented registry key.
  2. Je nach der von Ihnen ausgewählten Browser-Emulationseinstellung müssen Sie möglicherweise sicherstellen, dass Ihr Dokument einen geeigneten DOCTYPE enthält. Auch dies ist in der documentation beschrieben.

So zum Beispiel, wenn Sie eine möglichst einfache Änderung vornehmen möchten, würden Sie die folgende Registrierungseinstellung hinzu:

 
HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER) 
    SOFTWARE 
     Microsoft 
     Internet Explorer 
      Main 
       FeatureControl 
        FEATURE_BROWSER_EMULATION 
        YourExeNameGoesHere.exe = (DWORD) 00009999 

Die Dokumentation für den Wert 9999 sagt:

Windows Internet Explorer 9. Webseiten werden unabhängig von der! DOCTYPE-Direktive im IE9-Standards-Modus angezeigt.

Waren Sie 9000 dann müssten Sie auch die DOCTYPE Ihres Dokuments zu ändern, verwenden:

Internet Explorer 9. Webpages enthalten standardbasierte DOCTYPE Richtlinien angezeigt werden in IE9 Modus. Standardwert für Internet Explorer 9.

Die verknüpfte Dokumentation enthält auch die Informationen, die zur Angabe anderer IE-Versionen erforderlich sind.

+1

TY. Diese Lösung funktioniert. Für 32-Bit-Anwendungen auf einem 64-Bit-Betriebssystem müssen Sie den Eintrag u hinzufügen nder ... SOFTWARE \ Wow6432Node \ Microsoft \ ... – user2638894

+1

Das stimmt. Es sei denn, Sie verwenden 'HKCU \ Software', für die es keine separaten 32- und 64-Bit-Ansichten gibt. Wenn Sie die Einstellung in Ihrem Installationsprogramm hinzufügen, erledigt das Registrierungsredirector natürlich die Arbeit für Sie und umleiten zu der 32-Bitansicht. Angenommen, Sie benötigen ein 32-Bit-Installationsprogramm für Ihr 32-Bit-Programm. –

+0

Ein bisschen off topic, aber stille relevant für Sie: Wenn Sie mit TWebBrowser arbeiten diese Website Sie könnten helfen, eine Menge: http://www.delphidabbler.com/articles?article=21 –

3

sind in html, "http-equiv =" X-UA-Compatible“content = "IE = edge"

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" http-equiv="X-UA-Compatible" content="IE=edge" /> 
</head> 
<body> 
       your code .... 
</body> 
</html> 
+0

Beachten Sie, dass dieses Meta-Tag das ** erste ** -Tag im Kopfbereich sein muss, und '' muss auch gesetzt werden. – kobik