2012-05-01 33 views
7

Điều khiển WPB WebBrowser có phụ thuộc vào phiên bản IE được cài đặt trên máy của người dùng hay không, sử dụng một thư viện riêng biệt nhất quán trên các máy không? Tôi đã đọc rằng nó chỉ ám trong chế độ IE7, nhưng tôi muốn chắc chắn rằng sẽ không có bất kỳ vấn đề với một người dùng hoặc là không có IE cài đặt hoặc vẫn còn trên IE6 vì một lý do nào đó.WPF WebBrowser Browser Version

Trả lời

13

Các MSDN remarks for WebBrowser thấy nó rehosts sự kiểm soát IE ActiveX:

Việc kiểm soát WebBrowser nội instantiates mẹ đẻ WebBrowser điều khiển ActiveX.

Điều khiển WebBrowser ActiveX được gọi là Shdocvw.dll. Điều này lần lượt kết thúc tốt đẹp Mshtml.dll, và có lẽ các DLL khác cho môi trường của bạn. One caveat of rehosting this control is its setting for Browser Emulation:

Đối với các ứng dụng lưu trữ điều khiển WebBrowser, giá trị mặc định là 7000. Để kiểm soát giá trị của tính năng này bằng cách sử dụng sổ đăng ký, hãy thêm tên tệp thi hành của bạn vào cài đặt sau và đặt giá trị cho phù hợp với cài đặt mong muốn.

0x7000 có nghĩa là chế độ tương thích IE7. Do đó, nếu bạn muốn ứng dụng WPF của bạn hiển thị sử dụng một số chế độ khác mà bạn cần phải cập nhật registry, như adapted from this example:

[HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"MyApplication.exe" = dword:2328 
+3

Một tài nguyên hữu ích khác là [bài đăng trên blog này từ Rick Strahl khi anh ấy gặp vấn đề khi làm việc với Trình trợ giúp Html của mình] (http://www.west-wind.com/weblog/posts/2011/May/21/ Web-Browser-Control-Chỉ định-the-IE-Phiên bản). – user7116

+0

Câu hỏi đặt ra là "Kiểm soát WebBrowser WPF có phụ thuộc vào phiên bản IE được cài đặt trên hệ thống không?" Câu trả lời này chỉ nói về cách mô phỏng IE7 có thể được thiết lập hoặc ghi đè. Điều gì sẽ xảy ra nếu người dùng không cài đặt IE trên máy tính của họ hoặc có IE6? – ThePersonWithoutC

0

Tôi tạo ra một ứng dụng WPF với một điều khiển WebBrowser trên một máy với IE11 và nhận này chuỗi user agent:

user agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3; .NET CLR 1.1.4322) 

tôi tạo ra một ứng dụng WPF với một điều khiển WebBrowser trên một máy với IE10 và nhận này chuỗi user agent:

user agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E) 

Trident/7.0 cho biết IE11 và Trident/6.0 biểu thị IE10. More about user-agent strings.

Hệ thống với IE10 cũng có trang hiển thị khác với hệ thống bằng IE11. Tôi cũng đã xác minh điều này với các trình duyệt IE độc lập trên mỗi hệ thống.

Tôi chưa thử trên hệ thống KHÔNG có IE hoặc hệ thống chạy IE6, nhưng có vẻ như điều khiển WebBrowser liên quan đến phiên bản IE hiện được cài đặt trên hệ thống.

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