33

Vì vậy, tôi có một ứng dụng Biểu mẫu C sử dụng thành phần trình duyệt web. Rõ ràng Response.Write (Request.Browser.Version.ToString()); trả về "7.0" khi tôi truy cập trang thử nghiệm của tôi từ thành phần trình duyệt web.Thành phần Trình duyệt web là IE7 không phải IE8? Làm thế nào để thay đổi điều này?

Làm cách nào để làm cho thành phần trình duyệt web này sử dụng IE8?

+0

Tôi cho rằng ứng dụng đang chạy từ máy tính có cài đặt IE 8, phải không? –

+0

Có. Tôi đã thử nó trên 3 máy tính (tất cả đang chạy IE8). – Chris

+1

Câu trả lời cho http://stackoverflow.com/questions/937573/changing-the-useragent-of-the-webbrowser-control-winforms-c dường như cho biết bạn cần phải mở rộng thành phần để đặt người dùng- tác nhân được truyền trong các yêu cầu mà nó tạo ra. –

Trả lời

32

Có vẻ bạn cần phải fiddle với registry theo bài viết này: -

http://blogs.msdn.com/ie/archive/2009/03/10/more-ie8-extensibility-improvements.aspx

Để chạy một điều khiển WebBrowser trong IE8 Chế độ tiêu chuẩn, sử dụng giá trị mới sau vào registry:

[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"MyApplication.exe" = dword 8000 (Hex: 0x1F40) 

Để chạy trong Chế độ chuẩn của IE7, hãy sử dụng giá trị đăng ký sau:

[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"MyApplication.exe" = dword 7000 (Hex: 0x1B58) 

Đối với IE8 RTM, chúng tôi đã thêm giá trị Chế độ tiêu chuẩn IE8 “buộc” mới. Khi một ứng dụng chọn vào chế độ này, điều khiển Trình duyệt Web sẽ sử dụng chuỗi Tác nhân Người dùng IE8 và chế độ Trình mô phỏng Trình duyệt một cách nghiêm ngặt. Nó cũng sẽ bỏ qua các tính năng dự phòng như danh sách Chế độ xem tương thích được tích hợp sẵn và danh sách Chế độ xem tương thích do người dùng tạo khi tải trang. Để chạy ở chế độ tiêu chuẩn IE8 “buộc”, sử dụng các giá trị sau đây đăng ký:

[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"MyApplication.exe" = dword 8888 (Hex: 0x22B8) 

Trong tất cả các ví dụ, “MyApplication.exe” đề cập đến tên của ứng dụng của bạn.

+0

Cảm ơn vì điều này. Điều này có vẻ như là sửa chữa duy nhất. Tuy nhiên, tôi nghĩ rằng tôi sẽ gắn bó với một trình duyệt web IE7 cho bây giờ. – Chris

15

Tôi đã làm theo điều này và nó không hoạt động cho đến khi tôi nhận ra đó là vì tôi đang gỡ lỗi trong studio trực quan.

Ngày đầu thiết lập registry cho các ứng dụng của bạn:

Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", 
    System.AppDomain.CurrentDomain.FriendlyName, value); 

Bạn cũng nên thiết lập nó để gỡ lỗi của bạn (visual studio lưu trữ) ứng dụng:

Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", 
    System.AppDomain.CurrentDomain.FriendlyName.Replace(".exe",".vshost.exe"), value); 
+1

Bạn có thể sử dụng System.AppDomain.CurrentDomain.FriendlyName để lấy tên ứng dụng, thay vì mã hóa nó. –

27

Câu trả lời có thể đến muộn và might không áp dụng cho trường hợp của bạn, nhưng theo câu trả lời của Ron về câu hỏi WPF .net4 webBrowser and Internet Explorer 8, bạn cũng có thể kiểm soát trình duyệt web nếu bạn có quyền kiểm soát trang được phân phát:

<meta http-equiv="X-UA-Compatible" content="IE=edge"/> 

Trong khi điều này có vẻ như không làm thay đổi tác nhân người dùng, có vẻ như điều kiện như

<!--[if lt IE 8]> 

và CSS border-radius đang được đánh giá đúng, chỉ ra rằng động cơ mới nhất (IE 9 trên hệ thống của tôi) là thực sự được sử dụng mặc dù tác nhân người dùng báo cáo MSIE 7.0.

+1

Bạn vừa lưu lại ngày của tôi! Cảm ơn nhiều. – nrodic

+0

Xin Chúa ban phước cho bạn !! –

+0

btw, tại các chủ đề khác, mọi người lưu ý rằng bạn có thể cần phải thêm meta này trực tiếp sau phần tử (là con đầu tiên) –

Các vấn đề liên quan