浏览器开发CEFSharp (十七)网页自定义下载—仙盟创梦IDE

自定义下载对话框

操作步骤,点击下载弹出

实现代码

在当今互联网时代,浏览器作为信息获取与交互的重要入口,其功能的便捷性和用户体验的优化至关重要。东方仙盟 VOS 智能浏览器通过添加自定义下载对话框,解决了默认浏览器在下载过程中存在的诸多问题,为用户带来了全新的下载体验。同时,深入探讨初学者如何开发自己的浏览器,有助于推动浏览器技术的创新与发展。

一、东方仙盟 VOS 智能浏览器自定义下载框的意义

(一)解决文件保存位置不明问题

许多默认浏览器在下载文件时,不会弹出明确的保存位置选择框,文件往往被默认下载到系统的特定文件夹中。这对于普通用户,尤其是不太熟悉计算机操作的人群来说,下载完成后很难找到文件所在位置。东方仙盟 VOS 智能浏览器的自定义下载对话框,以直观的方式让用户自主选择文件保存路径。通过弹出标题为 "请选择保存位置 --- 东方仙盟 VOS" 的SaveFileDialog对话框,用户可以清晰地看到建议的文件名,并根据自身需求选择合适的保存目录,大大提高了文件管理的便利性。

(二)提升用户下载自主性

自定义下载对话框赋予用户更多的控制权。在下载文件时,用户不再局限于默认的保存路径和文件名。可以根据自己的文件分类习惯,将文件保存到特定的文件夹中,方便日后查找和管理。例如,用户可以将工作相关的文件统一保存到工作文件夹,将娱乐文件保存到相应的娱乐文件夹,使文件管理更加有序。

(三)增强下载体验

从用户体验的角度来看,清晰明了的下载对话框能够减少用户在下载过程中的困惑和焦虑。当用户能够自主掌控文件的保存位置和文件名时,会对下载过程更有信心,提升对浏览器的满意度。这种优化不仅体现了对用户需求的关注,也有助于提升东方仙盟 VOS 智能浏览器在市场中的竞争力。

二、自带下载后打开目录的优势

(一)即时访问下载文件

东方仙盟 VOS 智能浏览器在下载完成后,能够自动打开文件所在目录。当检测到下载完成时,通过Process.Start("explorer.exe", Path.GetDirectoryName(downloadItem.FullPath))代码实现这一功能。这一特性极大地方便了用户,尤其是在需要立即使用下载文件的场景下,用户无需手动查找文件位置,节省了时间和精力。

(二)强化用户对下载结果的感知

自动打开下载目录让用户更直观地看到下载的成果,增强了用户对下载操作的反馈感知。用户可以立即确认文件是否成功下载,以及文件的保存位置是否符合预期,进一步提升了用户体验。

(三)优化文件管理流程

对于一些需要后续处理的文件,如解压、编辑等,自动打开目录能够快速引导用户进入文件所在位置,优化了文件管理流程,提高了工作效率。

三、初学者开发自己浏览器的步骤

(一)基础知识学习

  1. 编程语言选择:开发浏览器通常需要掌握一门或多门编程语言。对于初学者而言,C# 是一个不错的选择,因为它具有简单易学、功能强大的特点,且有丰富的类库和开发工具支持。如上述代码使用 C# 语言进行东方仙盟 VOS 智能浏览器的部分功能开发。
  2. 浏览器内核了解:浏览器内核是浏览器的核心组件,负责解析网页代码并显示页面。常见的浏览器内核有 WebKit(如 Chrome、Safari 使用)、Gecko(如 Firefox 使用)和 Trident(如早期 IE 使用)。在 C# 开发中,可以使用 CefSharp,它基于 Chromium 开源项目,提供了在.NET 应用程序中嵌入 Chromium 浏览器的能力,方便开发者快速构建具有现代浏览功能的应用程序。

(二)开发环境搭建

  1. 安装开发工具:以 C# 开发为例,需要安装 Visual Studio,它是一个功能强大的集成开发环境,提供了代码编辑、调试、编译等一系列功能。在 Visual Studio 中创建新的项目,并选择合适的项目模板,如 Windows Forms 应用程序,用于开发具有图形界面的浏览器应用。
  2. 引入相关库:如果使用 CefSharp,需要在项目中引入 CefSharp 及其相关依赖库。可以通过 NuGet 包管理器进行安装,方便快捷地获取最新版本的库,并自动处理依赖关系。

(三)功能实现

  1. 基本浏览功能 :实现加载网页、前进、后退、刷新等基本浏览功能。通过 CefSharp 的ChromiumWebBrowser控件,可以轻松实现网页的加载与显示。例如,在窗体中添加ChromiumWebBrowser控件,并设置其Address属性为要加载的网址,即可实现网页加载。
  2. 下载功能定制 :参考东方仙盟 VOS 智能浏览器的下载功能实现方式,开发自定义下载对话框。首先,实现IDownloadHandler接口,在OnBeforeDownload方法中显示自定义的SaveFileDialog对话框,让用户选择保存路径;在OnDownloadUpdated方法中处理下载完成后的操作,如打开下载目录、提示下载成功等。
  3. 其他功能拓展:根据需求,可以进一步拓展浏览器功能,如添加书签管理、历史记录查看、广告拦截等功能。这些功能可以通过调用相应的 API 或使用第三方库来实现。

(四)测试与优化

  1. 功能测试:对开发的浏览器进行全面的功能测试,确保各项功能正常运行。测试不同类型的网页加载情况,验证下载功能的准确性和稳定性,检查自定义下载对话框的交互是否友好等。
  2. 性能优化:优化浏览器的性能,减少内存占用、提高网页加载速度。可以通过优化代码逻辑、合理使用缓存等方式来提升性能。同时,对不同网络环境下的浏览器表现进行测试,确保在各种网络条件下都能提供良好的用户体验。

东方仙盟 VOS 智能浏览器通过创新的自定义下载对话框和下载后打开目录功能,为用户带来了便捷高效的下载体验。对于初学者来说,开发自己的浏览器不仅是学习技术的过程,也是推动浏览器技术不断创新的重要途径。通过系统的学习、实践和优化,初学者可以逐步打造出满足个性化需求的浏览器应用。

代码

复制代码
  public class 东方仙盟_DownloadHandler109 : IDownloadHandler
    {
        public void OnBeforeDownload(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback)
        {
            if (!callback.IsDisposed)
            {
                using (callback)
                {
                    //callback.Continue(downloadItem.SuggestedFileName, true);
                    // 2. 显示自定义下载窗口(以WinForm为例)
                    var saveDialog = new SaveFileDialog
                    {
                        Title = "请选择保存位置---东方仙盟VOS ", // 自定义标题
                        FileName = downloadItem.SuggestedFileName, // 建议的文件名
                        Filter = "所有文件|*.*" // 可根据文件类型设置过滤
                    };

                    // 3. 获取用户选择的路径
                    if (saveDialog.ShowDialog() == DialogResult.OK)
                    {
                        // 4. 继续下载到用户选择的路径
                        callback.Continue(saveDialog.FileName, showDialog: false);
                    }
                    else
                    {
                        // 用户取消下载
                       // callback.can();
                    }
                }
            }
        }

        public void OnDownloadUpdated(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
        {
            if (downloadItem.IsComplete)
            {
                //如果不相等,可以关闭
                if (!chromiumWebBrowser.GetBrowser().Equals(browser))
                {
                    browser.CloseBrowser(true);
                }

                //  MessageBox.Success("下载成功");
                MessageBox.Show("下载成功", "东方仙盟VOS");

                //打开文件夹
                try
                {
                    Process.Start("explorer.exe", Path.GetDirectoryName(downloadItem.FullPath));
                }
                catch { }


                //打开pdf文件
                try
                {
                    if (downloadItem.FullPath.ToLower().EndsWith(".pdf"))
                    {
                        Process.Start("explorer", downloadItem.FullPath);
                    }
                }
                catch { }
            }
        }

阿雪技术观

在科技发展浪潮中,我们不妨积极投身技术共享。不满足于做受益者,更要主动担当贡献者。无论是分享代码、撰写技术博客,还是参与开源项目维护改进,每一个微小举动都可能蕴含推动技术进步的巨大能量。东方仙盟是汇聚力量的天地,我们携手在此探索硅基生命,为科技进步添砖加瓦。

Hey folks, in this wild tech - driven world, why not dive headfirst into the whole tech - sharing scene? Don't just be the one reaping all the benefits; step up and be a contributor too. Whether you're tossing out your code snippets, hammering out some tech blogs, or getting your hands dirty with maintaining and sprucing up open - source projects, every little thing you do might just end up being a massive force that pushes tech forward. And guess what? The Eastern FairyAlliance is this awesome place where we all come together. We're gonna team up and explore the whole silicon - based life thing, and in the process, we'll be fueling the growth of technology.

相关推荐
未来之窗软件服务17 小时前
自建开发工具IDE(二)文件托拽读取——东方仙盟炼气期
开发语言·前端·javascript·仙盟创梦ide·东方仙盟
凄戚19 小时前
bash和命令
开发语言·chrome·bash
Evan芙19 小时前
Bash 变量命名规则与类型使用
linux·运维·开发语言·chrome·bash
wyjcxyyy1 天前
polar靶场-MISC,WEB(中等)
前端·chrome
未来之窗软件服务1 天前
幽冥大陆(二十三)python语言智慧农业电子秤读取——东方仙盟炼气期
开发语言·python·仙盟创梦ide·东方仙盟·东方仙盟sdk·东方仙盟浏览器
女生寝室0381 天前
《Chrome》 [142.0.7444.60][绿色便携版] 下载
前端·chrome
CS_浮鱼1 天前
【Linux】基础IO
linux·运维·chrome
Keely402852 天前
学习编写chrome插件:Hello World 扩展
前端·chrome
saber_andlibert2 天前
【Linux】Shell脚本
运维·chrome·vscode·编辑器·vim·shell
花果山总钻风2 天前
Chrome 插件框架 Plasmo 基本使用示例
前端·chrome