Tôi cần sử dụng trình duyệt web trong ứng dụng vì nó giữ nhiệm vụ lặp đi lặp lại từ nhân viên, nhưng có một vấn đề với javascript mở một cửa sổ mới trong IE sau khi nhấp vào neo. Làm thế nào để tôi kiểm soát trình duyệt web để "mở cửa sổ mới" nơi tôi muốn mở nó? Ví dụ trong điều khiển trình duyệt web khác?Làm cách nào để kiểm soát Trình duyệt web luôn mở trang web trong cùng một cửa sổ?
Trả lời
Check-out: proof-of-concept of .NET System.Windows.Forms.WebBrowser module using mã nguồn
Kinh nghiệm của tôi về điều khiển đã cho tôi một tầm nhìn rằng vấn đề này có thể cố gắng để được giải quyết trong các bước tiếp theo:
luôn hủy NewWindow sự kiện
bắt all links nhấp
nhưng không phải tất cả liên kết có thể được lưu trữ theo cách này, vì vậy tôi đã quyết định để phân tích tất cả các thẻ
<a>
bằng tay trên Document Loading Completionnói chung, kiểm soát này là rất nghèo và đã được thực hiện như vậy bởi Microsoft cố ý. dù có là công cụ mạnh mẽ xung quanh Webrowser.Document.HtmlDocument và namespace MSHTML
một ví dụ về nó sử dụng là HtmlElement.DomElement
foreach(HtmlElement tag in webBrowser.Document.All) { switch (tag.TagName.ToUpper) { case "A": { tag.MouseUp += new HtmlElementEventHandler(link_MouseUp); break; } } } void link_MouseUp(object sender, HtmlElementEventArgs e) { HtmlElement link = (HtmlElement)sender; mshtml.HTMLAnchorElementClass a = (mshtml.HTMLAnchorElementClass)link.DomElement; switch (e.MouseButtonsPressed) { case MouseButtons.Left: { if ((a.target != null && a.target.ToLower() == "_blank") || e.ShiftKeyPressed || e.MouseButtonsPressed == MouseButtons.Middle) { // add new tab } else { // open in current tab } break; } case MouseButtons.Right: { // show context menu break; } } }
Xem thêm tại liên kết đầu tiên, đó là mã nguồn của cửa sổ chính, có một rất nhiều thao tác khác nhau ở đó!
Có một lỗi trong trường hợp MouseBUttons.Left
:
Lỗi 1 điều không thể lọt qua từ một nhãn trường hợp ('trường hợp 1048576:') để C khác: \ Documents and Settings \ từng \ My Documents \ Visual Studio 2005 \ Projects \ Desarrollo \ wApp_SurverMonkey \ wApp_SurverMonkey \ frmNetcare.cs 64 17 wApp_SurverMonkey
Tại sao một câu trả lời phức tạp như Guys? Abatischev, tôi tò mò muốn được nhìn thấy vào bộ não của bạn, nên thú vị ...
Chỉ cần cố gắng này:
Private Sub WB1_NewWindow(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles WB1.NewWindow
newUrl = WB1.Url.ToString
e.Cancel = True
WB1.Navigate(newUrl)
End Sub
Bây giờ bạn có thể thay đổi dòng thứ hai vào WB2 hoặc bất kỳ thành phần WebBrowser khác trong bất kỳ các biểu mẫu OWN của bạn.
Tôi đã tìm thấy một giải pháp đơn giản hoạt động.
private void WebBrowser1_NewWindow(object sender, System.ComponentModel.CancelEventArgs e) {
e.Cancel = true;
WebBrowser1.Navigate(WebBrowser1.StatusText);
}
Điều này đã giúp tôi rất nhiều cảm ơn bạn. –
Cảm ơn bạn, Mã này hoạt động tốt (VS 2015, C#). Hiện không có cửa sổ mới. Dễ sử dụng và đoạn trích nhỏ. – user2422690
Giải pháp sáng chói. Cảm ơn Sam. – Neophile
- 1. Kiểm soát trình duyệt Web Phone 8
- 2. Kiểm soát cửa sổ trình duyệt thông qua Javascript
- 3. Đảm bảo rằng trình duyệt web mở bằng trình quản trị web luôn ở trong tiêu điểm
- 4. Nhúng cửa sổ trình duyệt web vào Java
- 5. Làm cách nào để xác nhận cửa sổ trình duyệt đang mở, với Javascript?
- 6. Mở trang web trong trình duyệt mặc định
- 7. Cách mở tài liệu trong một cửa sổ riêng biệt từ bản đồ trang web
- 8. Làm thế nào để bạn mở trình duyệt web Eclipse?
- 9. Mở cửa sổ Trình duyệt từ chương trình Java
- 10. Mở Cửa sổ trình duyệt IE
- 11. ASP.NET Response.Redirect để mở một cửa sổ trình duyệt mới?
- 12. Mở tệp hiện tại trong trình duyệt web trong Vim
- 13. Python - Flask - mở một trang web trong trình duyệt mặc định
- 14. LUÔN LUÔN trên cửa sổ trên cùng
- 15. Làm cách nào để kiểm tra trang web bằng XAMPP?
- 16. Cách tạo cửa sổ trình duyệt trong J2ME?
- 17. Cách ngăn chặn nhiều cửa sổ trình duyệt chia sẻ cùng một phiên trong asp.net
- 18. Mở PDF trong trình duyệt mới đầy đủ cửa sổ
- 19. cách cuộn xuống một trang web
- 20. Trình duyệt web nào hỗ trợ các trình duyệt web?
- 21. Làm cách nào để liên kết Wordpress 'Preview' mở trong cùng một cửa sổ?
- 22. Làm cách nào để bảng tính mở Excel thay vì cửa sổ trình duyệt?
- 23. Tôi làm cách nào để kiểm tra công việc trang web của mình trong Safari mobile?
- 24. làm thế nào để chuyển đổi cửa sổ hình đối tượng tài liệu kiểm soát trình duyệt để mshtml.IHTMLDocument2
- 25. Mở một Tệp TIFF từ Trình duyệt Web
- 26. Trang chủ trình duyệt web Android
- 27. Làm cách nào để mở http: // localhost trong trình duyệt web của tôi từ Vim?
- 28. System.Windows.Forms.WebBrowser mở liên kết trong cùng cửa sổ hoặc cửa sổ mới với cùng một phiên
- 29. Làm cách nào để mở một trang web với urllib qua proxy trong Python?
- 30. Có cách nào để đính kèm trình duyệt đang chạy vào trình duyệt web selenium trong java không?
Tôi muốn nghe câu trả lời cho điều này. Nhưng, liệu thành phần đó có phải thông báo cho ứng dụng của bạn rằng một cửa sổ mới sẽ được mở ra không? Sau đó bạn sẽ phải mở cửa sổ mới với một thành phần WebBrowser mới. Có lẽ có một sự kiện? –
Thật không may, neo là "javascript: void (0)" liên kết .. Tôi không biết làm thế nào để giải quyết này – Skuta
Tôi đã sửa bài của tôi – abatishchev