Tôi đang cố gắng đánh chặn nhấn vào liên kết trong điều khiển WebBrowser. Trang HTML của tôi chứa các liên kết tùy chỉnh, đối với một số bắt đầu bằng chia sẻ: // Tôi muốn chặn khi người dùng chạm vào nó.Cách chặn khi người dùng nhấp vào liên kết trong một webbrowser
Trên iPhone, tôi sẽ sử dụng webView: shouldStartLoadWithRequest: navigationType: method và xem URL được chọn.
Tôi chưa quản lý để tái tạo hành vi tương tự với Silverlight cho Windows Phone.
tôi làm điều gì đó như:
{
webBrowser1.Navigating += new EventHandler<NavigatingEventArgs>(webBrowser1_Navigating);
}
void webBrowser1_Navigating(object sender, NavigatingEventArgs e)
{
string scheme = null;
try
{
scheme = e.Uri.Scheme; // <- this is throwing an exception here
}
catch
{
}
if (scheme == null || scheme == "file")
return;
// Not going to follow any other link
e.Cancel = true;
if (scheme == "shared")
{
}
Nhưng tôi đoán là một ngoại lệ khi đọc một số thuộc tính của Uri, khi đó là một Uri tiêu chuẩn với một tập tin mặc định: // URL Thêm vào đó, Duyệt sự kiện isn' t thậm chí được kích hoạt cho các liên kết bắt đầu bằng chia sẻ: //
Bây giờ tôi có thể chụp ảnh trên chia sẻ: // Tôi không quan tâm nhiều, nhưng ít nhất tôi muốn có thể truy xuất URL chúng tôi sẽ điều hướng đến và hủy hoạt động mặc định cho một URL cụ thể.
Bất kỳ ý tưởng gì đang xảy ra? Cảm ơn
Edit: Hóa ra là vấn đề là sự kiện Duyệt chỉ được tạo cho các liên kết sau đây: file: //, http: // hoặc mailto: // Các thuộc tính âm mưu của Uri là chỉ khả dụng cho các liên kết http: // và mailto: //
vì vậy những gì tôi đã làm cuối cùng sẽ thay thế liên kết được chia sẻ: // với http://shared/blah ... Và tôi xem URL ... Điều này phù hợp với mục đích của tôi. Bây giờ tôi có thể có các liên kết có hành động khác (như mở một cửa sổ phụ) tùy thuộc vào các liên kết trong html.
Trên thực tế các ngoại lệ được ném cho mọi thứ trừ liên kết bên ngoài (url bắt đầu bằng http: //) hoặc email (url bắt đầu bằng mailto: //) – jyavenard
Bạn đã thử sử dụng e.Uri.ToString() rồi phân tích cú pháp để truy xuất lược đồ? –
Bạn phát hiện khi nào một 'shared: //' được nhấn? – keyboardP