精华内容
下载资源
问答
  • 导读:在这篇文章中,我试图给出你在 Ubuntu 和其他 Linux 系统上使用的最佳网页浏览器。 本文字数:4597,阅读时长大约:7分钟https://linux.cn/art...

    c55cf5e61b146af7753744a221a8958b.png

    导读:在这篇文章中,我试图给出你在 Ubuntu 和其他 Linux 系统上使用的最佳网页浏览器。     

    本文字数:4597,阅读时长大约:7分钟

    https://linux.cn/article-14075-1.html
    作者:Ankush Das
    译者:Xingyu.Wang

    没有所谓的完美的网页浏览器。这完全取决于你喜欢什么以及你用它来做什么。

    但对于 Linux 上的网页浏览器,你有哪些最佳选择呢?

    在这篇文章中,我试图给出你在 Ubuntu 和其他 Linux 系统上使用的最佳网页浏览器。

    注: 我们已经在 Ubuntu 上尝试和测试了这些浏览器。但是,你应该能够在你选择的任何 Linux 发行版上安装它。

    outside_default.png

    Linux 上的顶级网页浏览器

    每个浏览器都有其独特之处。而且,对于 Linux 平台,也有一些有趣的独家选择。

    在你看到这个列表之前,请注意这不是一个排名列表。列在第 1 位的浏览器不应该被认为比第 2 位、第 3 位或第 10 位的更好。

    非自由开源软件警示!

    这里提到的一些应用程序不是开源的。它们被列在这里是因为它们在 Linux 上可用,而文章的重点是 Linux。我们也有一个单独的 开源的网页浏览器的专门列表🔗 itsfoss.com。

    outside_default.png

    1、Vivaldi

    114f160cb2b626ea66a45c62c2eae435.png

    优点

    ◈ 可快速访问网页应用程序的侧边栏

    ◈ 集成了日历和电子邮件

    ◈ 独特的标签管理

    ◈ Pomodoro 功能(时钟计时器)

    ◈ 有移动应用程序

    缺点

    ◈ 当使用各种功能时,资源占用很重

    ◈ 不是 100% 开源的

    Vivaldi🔗 vivaldi.com 是一个令人印象深刻的浏览器,它越来越多地得到了 Linux 用户的关注。

    虽然它不是 100% 开源的,但你可以在网上找到它的大部分源代码(除了它的用户界面)。

    随着 Vivaldi 4.0 的发布🔗 news.itsfoss.com,他们更加注重改善 Linux 用户的体验。你可以设置时钟计时器以提高你的工作效率,使用内置翻译来翻译网页,跟踪你的日历活动,为网页应用程序添加快捷方式,并通过这个浏览器为多种任务发挥到极致。

    即使它是一个快速的网页浏览器,我也不会觉得它是“最快”或最轻量级的。你需要大量的内存,才能在你工作时发挥它的所有的功能。

    总之,它是一个功能丰富的网页浏览器。因此,如果你需要有尽可能多的功能来完成多种任务,Vivaldi 可以是你的选择。

    outside_default.png

    如何在 Linux 上安装 Vivaldi?

    Vivaldi 提供了 .deb 和 .rpm 两种软件包,让你可以直接在 Linux 系统中安装它。

    如果你是 Linux 的新手,你可以参考我们的资源来 安装 Deb 文件🔗 itsfoss.com 和 安装 RPM 文件🔗 itsfoss.com。

    outside_default.png

    2、Mozilla Firefox

    b52888450bdd9b374386b3cf8459c0b8.png

    优点

    ◈ 隐私保护

    ◈ 不基于 Chrome 引擎

    ◈ 开源

    ◈ Firefox 帐户服务

    缺点

    ◈ 用户体验会随着重大更新而改变

    Firefox🔗 www.mozilla.org 是大多数 Linux 发行版的默认网页浏览器。因此,它显然是一个开箱即用的浏览器。

    除了是开源的,它还提供一些最好的隐私保护功能。而且,通过正确的设置,你可以把它变成类似于 Tor 浏览器(它也是基于 Firefox 的)这样的最安全的浏览器之一。

    不仅仅是它的安全性,当你用你的 Firefox 账户登录时,它还集成了有用的功能,如 Pocket(保存网页并稍后阅读)、VPN、电子邮件别名、漏洞监控等。

    outside_default.png

    如何在 Linux 上安装 Firefox?

    它应该已经预装在你的 Linux 发行版中了。但是,如果它不存在,你可以在软件中心搜索它,或者用终端的以下命令来安装它:

    sudo apt install firefox
    outside_default.png

    3、Chromium

    3b7c0a12dbd4a2b0d8d9e4c23dde44fc.png

    优点

    ◈ Chrome 浏览器的开源替代品

    ◈ 与 Chrome 浏览器的功能相似

    缺点

    ◈ 缺少 Chrome 浏览器提供的某些功能

    Chromium🔗 www.chromium.org 是 Chrome 浏览器的开源替代品,也是许多其他基于 Chrome 的浏览器的基础。

    如果你不想使用 Chrome 浏览器,Chromium 是你在 Linux 上获得相同体验的最佳选择。

    尽管谷歌控制着 Chromium,并且 一直锁定着 Chrome🔗 news.itsfoss.com,但对于 Linux 系统来说,它是一个不错的选择。

    outside_default.png

    如何在 Linux 上安装 Chromium?

    你应该可以在软件中心轻松找到它。但是,如果你需要帮助,可以参考我们的 Chromium 安装指南🔗 itsfoss.com。

    outside_default.png

    4、谷歌 Chrome

    db9a8aa539ec6cf930cac2292a82bbb9.png

    优点

    ◈ 与谷歌服务的无缝整合

    缺点

    ◈ 不是开源的

    Chrome 浏览器🔗 www.google.com 是一个优秀的网页浏览器,除非你不想选择谷歌的专有解决方案或产品。

    你可以得到所有的基本功能,并且能够整合所有的谷歌服务。如果你喜欢在安卓系统上使用 Chrome 浏览器,并希望在多个平台上进行同步,那么它是桌面 Linux 的明显选择。

    如果你在使用谷歌服务的同时寻找一个简单而强力的网页浏览器,Chrome 浏览器可以是一个不错的选择。

    outside_default.png

    如何在 Linux 上安装 Chrome 浏览器?

    Chrome 浏览器提供 Deb 和 RPM 包,可以让你在任何基于 Ubuntu 或 Fedora/openSUSE 发行版上安装。

    如果你在安装方面需要帮助,我应该向你指出我们关于 在 Linux 上安装 Chrome 浏览器🔗 itsfoss.com 的指南。

    outside_default.png

    5、Brave

    8e34e6409db94a5c36889b71bc64b69d.png

    优点

    ◈ 隐私保护功能

    ◈ 性能

    缺点

    ◈ 没有基于账户的同步

    Brave🔗 brave.com 浏览器是最受欢迎的 Linux 浏览器之一。

    它是一个开源项目,基于 Chromium。它提供几个有用的隐私保护功能,并以其极快的性能而闻名。

    与其他浏览器不同的是,即使你屏蔽了网站上的广告,你也可以获得奖励。你收集的奖励只能用于回馈你喜欢的网站。这样一来,你在屏蔽广告的同时也得到了对网站的支持。

    你可以期待以最小的资源占用获得更快的用户体验。

    如果你需要在两者之间做出决定,我们也有一篇详细的 关于 Brave 和 Firefox 的比较文章🔗 itsfoss.com。

    outside_default.png

    如何在 Linux 上安装 Brave?

    与其他一些网页浏览器不同,你不能直接在软件中心找到软件包。你需要在终端输入一些命令来安装该浏览器。

    不用担心,你可以按照我们的 安装 Brave 浏览器的说明🔗 itsfoss.com 来进行。

    outside_default.png

    6、Opera

    94377808905b709d0b97c997ef44bd07.png

    优点

    ◈ 内置免费的 VPN

    ◈ 额外的功能

    缺点

    ◈ 不是开源的

    虽然 Opera🔗 www.opera.com 不是最流行的选择,但它对 Linux 用户来说绝对是一个有用的浏览器。

    它有一个内置的 VPN 和广告拦截器。因此,在 Opera 浏览器的帮助下,你应该会得到基本的隐私保护。

    你可以直接从侧边栏快速访问流行的聊天信使,而不需要启动单独的应用程序或窗口。这种侧边栏的聊天信使网页应用与 Vivaldi 类似,但用户体验明显不同。

    总的来说,如果你想要一个免费的 VPN 作为其他基本浏览功能之外的奖励,它是一个不错的选择。

    值得注意的是,Opera 提供了一个独特的 Opera GX🔗 www.opera.com 浏览器,让你在使用浏览器并同时进行游戏活动时可以调整或强制限制系统资源。在写这篇文章的时候,该功能还在开发 Linux 版本,如果在你读到这篇文章的时候,它已经可以使用了,这可能是一个很好的选择。

    outside_default.png

    如何安装 Opera?

    Opera 为 Linux 提供了 Deb 包。你只需前往其官方网站下载并安装即可。

    outside_default.png

    7、微软 Edge

    36a03391b1522c6134ca32af252fbf4b.png

    优点

    ◈ 为同时也使用 Linux 的 Windows 用户提供了方便的选择。

    缺点

    ◈ 不是开源的

    微软 Edge🔗 www.microsoftedgeinsider.com 在受欢迎程度上已经超过了 Mozilla Firefox。不仅仅是因为它是默认的 Windows 浏览器,而是它在基于 Chrome 浏览器的同时,还提供了很有前景的网页体验。

    微软 Edge 已经发布了面向 Linux 的稳定版。它目前运行良好,但缺乏一些的通常可用于 Windows 的功能。

    总的来说,你应该会发现大部分的基本功能都是可用的。

    如果你使用 Windows 和 Linux 作为你的桌面平台,微软 Edge 可以考虑作为首选的网页浏览器。

    outside_default.png

    如何在 Linux 上安装微软 Edge?

    现在,你可以通过微软 Edge 的官方网页获得 Deb/RPM 文件并安装它。

    你也可以看看我们关于 在 Linux 上安装微软 Edge🔗 itsfoss.com 的方法。

    outside_default.png

    Linux 独有的网页浏览器

    考虑到安全更新和未来升级,大多数用户喜欢坚持使用主流选项,但也有一些不同的选项。而且,有些是 Linux 用户专属的。

    outside_default.png

    8、GNOME Web(Epiphany)

    c98cbe0ec73de5b69a2680d67388bac9.png

    优点

    ◈ 精简

    ◈ 开源

    缺点

    ◈ 缺少许多功能

    ◈ 没有跨平台支持

    Epiphany 浏览器🔗 apps.gnome.org 是 GNOME 的默认浏览器。elementary OS 也将其作为默认的网页浏览器。

    它是一个精简的浏览器,提供了一个干净和优雅的用户体验。你不能同步你的书签或历史记录,所以如果你想备份或转移到其他浏览器,你需要手动导出它们。

    outside_default.png

    如何安装 GNOME Web?

    你可能会发现它预装在一些 Linux 发行版中。如果没有,你可以用它的 Flatpak 包🔗 flathub.org 来在任何 Linux 发行版上安装最新版本。

    outside_default.png

    9、Falkon

    e9257f626860ba160d6885340ebaf5e1.png

    优点

    ◈ 基于 Firefox 的替代品

    缺点

    ◈ 不能替代 Firefox

    ◈ 没有跨平台支持

    Falkon🔗 www.falkon.org 是一个基于 Firefox 的浏览器,考虑到了隐私问题。它对于基本的网页浏览应该是足够好的,但它可能不是你日常使用的解决方案。

    你可以在我们专门的 关于 Falkon 浏览器的文章🔗 itsfoss.com 中了解更多关于它的信息并获得安装说明。

    outside_default.png

    10、Nyxt

    969bde5a9803fdaf3224dd50f9481786.png

    优点

    ◈ 高度的可定制性

    ◈ 重点关注键盘操作

    缺点

    ◈ 适用于某些用户

    ◈ 缺乏跨平台支持

    Nyxt🔗 nyxt.atlas.engineer 是一个有趣的网页浏览器,为资深的键盘用户而建立。你可以使用键盘快捷键来浏览和导航网页。

    要了解更多关于它的信息和安装说明,请浏览我们关于 Nyxt 浏览器🔗 itsfoss.com 的详细文章。

    outside_default.png

    总结

    说到 Linux,你会有很多选择可供挑选。我在这里特意跳过了 如 Lynx 这样的基于命令行的网页浏览器🔗 itsfoss.com。

    那么,你会选择什么样的网页浏览器呢?

    此外,我很想知道,你在为你的系统安装网页浏览器时会考虑什么?

    欢迎在下面的评论中分享你的想法。


    via: https://itsfoss.com/best-browsers-ubuntu-linux/

    作者:Ankush Das 选题:lujun9972 译者:wxy 校对:wxy

    本文由 LCTT 原创编译,Linux中国 荣誉推出

    outside_default.png

    欢迎遵照 CC-BY-NC-SA 协议规定转载,

    如需转载,请在文章下留言 “转载:公众号名称”,

    我们将为您添加白名单,授权“转载文章时可以修改”。

    aabd75c34ca1610e088f2e11134711a2.gif

    展开全文
  • 如抓取http://map.sogou.com/api/这个网页,我写的程序,如果不带网址后面的"/",会抓取得不到,但是站上网(http://tool.chinaz.com/Tools/PageCode.aspx),不带最后面的"/"即可抓取到(即:http://map.sogou.com/api)...

    如抓取http://map.sogou.com/api/这个网页,我写的程序,如果不带网址后面的"/",会抓取得不到,但是站上网(http://tool.chinaz.com/Tools/PageCode.aspx),不带最后面的"/"即可抓取到(即:http://map.sogou.com/api),他是什么原理?下面贴出我的代码,请改进

    function file_get($url){ ob_start(); $ch = curl_init(); curl_setopt($ch, CURLOPT_COOKIEJAR, "./cookie.txt"); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.1; CIBA)");curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE); curl_setopt($ch, CURLOPT_NOBODY, FALSE); curl_exec($ch); curl_close($ch); $content = ob_get_clean(); return $content;}

    回复讨论(解决方案)

    请加一句代码:

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);

    因为你抓取http://map.sogou.com/api,他返回的是301跳转。加上这句就能抓取跳转后的html了。

    请加一句代码:

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);

    因为你抓取http://map.sogou.com/api,他返回的是301跳转。加上这句就能抓取跳转后的html了。

    加上也不行,还是无法获取

    请加一句代码:

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);

    因为你抓取http://map.sogou.com/api,他返回的是301跳转。加上这句就能抓取跳转后的html了。

    加上也不行,还是无法获取function file_get($url){ ob_start(); $ch = curl_init(); curl_setopt($ch, CURLOPT_COOKIEJAR, "./cookie.txt"); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.1; CIBA)");curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE); curl_setopt($ch, CURLOPT_FOLLOWLOCATION,TRUE); curl_setopt($ch, CURLOPT_NOBODY, FALSE); curl_exec($ch); curl_close($ch); $content = ob_get_clean(); return $content;}

    我测试过的,加上是行的呀。

    CURLOPT_FOLLOWLOCATION

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!

    展开全文
  • 微信QQ打开网页时提示用浏览器打开一,需求分析1.1,使用微信或QQ打开网址时,无法在微信或QQ内打开常用下载软件,手机APP等。故此需要在微信qq里提示二,功能实现2.1 html实现请点击右上角选择"浏览器中打开"2.2 css...

    微信QQ打开网页时提示用浏览器打开

    一,需求分析

    1.1,使用微信或QQ打开网址时,无法在微信或QQ内打开常用下载软件,手机APP等。故此需要在微信qq里提示

    二,功能实现

    2.1 html实现

    请点击右上角

    选择"浏览器中打开"

    2.2 css实现

    * {

    margin:;

    padding:;

    }

    #weixin-tip-box {

    display: none;

    position: fixed;

    right:;

    top: 4px;

    align-items: center;

    }

    .weixin-tip {

    background: #40b2a8;

    z-index:;

    padding: 8px;

    border-radius: 8px;

    margin-right: 8px

    }

    .weixin-tip p {

    text-align: center;

    font-size: 14px;

    color: #fff

    }

    .weixin-tip p.content {

    text-align: center;

    font-size: 14px

    }

    .triangle_border_up {

    width:;

    height:;

    border-width: 0 6px 12px;

    border-style: solid;

    border-color: transparent transparent #40b2a8;

    /*透明 透明 灰*/

    margin-left: 114px

    }

    2.3 javascript实现

    var is_weixin = (function () {

    var ua = navigator.userAgent.toLowerCase();

    if (ua.match(/MicroMessenger/i) == "micromessenger") {//微信中打开网页

    return true;

    } else if (ua.match(/QQ/i) == "qq") {//qq里打开网页

    return true;

    } else {

    return false;

    }

    })();

    window.onload = function () {

    //var winHeight = typeof window.innerHeight != 'undefined' ? window.innerHeight : document.documentElement.clientHeight;

    var tip = document.getElementById('weixin-tip-box');

    if (is_weixin) {

    tip.style.display = 'block';

    return false;

    }

    }

    2.4 实现效果

    bf942e20a4e8d5bab5a8f3aaa7f50892.png

    * {

    margin: 0;

    padding: 0;

    }

    #weixin-tip-box {

    display: none;

    position: fixed;

    right: 0;

    top: 4px;

    align-items: center;

    }

    .weixin-tip {

    background: #40b2a8;

    z-index: 100;

    padding: 8px;

    border-radius: 8px;

    margin-right: 8px

    }

    .weixin-tip p {

    text-align: center;

    font-size: 14px;

    color: #fff

    }

    .weixin-tip p.content {

    text-align: center;

    font-size: 14px

    }

    .triangle_border_up {

    width: 0;

    height: 0;

    border-width: 0 6px 12px;

    border-style: solid;

    border-color: transparent transparent #40b2a8;

    /*透明 透明 灰*/

    margin-left: 114px

    }

    app下载

    请点击右上角

    选择"浏览器中打开"

    var is_weixin = (function () {

    var ua = navigator.userAgent.toLowerCase();

    if (ua.match(/MicroMessenger/i) == "micromessenger") {//微信中打开网页

    return true;

    } else if (ua.match(/QQ/i) == "qq") {//qq里打开网页

    return true;

    } else {

    return true;

    }

    })();

    window.onload = function () {

    //var winHeight = typeof window.innerHeight != 'undefined' ? window.innerHeight : document.documentElement.clientHeight;

    var tip = document.getElementById('weixin-tip-box');

    if (is_weixin) {

    tip.style.display = 'block';

    return false;

    }

    }

    js判断移动端使用的系统平台

    var u = navigator.userAgent;

    if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {

    //安卓手机

    } else if (u.indexOf('iPhone') > -1) {

    //苹果手机

    } else if (u.indexOf('Windows Phone') > -1) {

    //winphone手机

    }

    js判断访问网站的设备是否是PC

    //平台、设备和操作系统

    var system ={

    win : false,

    mac : false,

    xll : false

    };

    //检测平台

    var p = navigator.platform;

    system.win = p.indexOf("Win") == 0;

    system.mac = p.indexOf("Mac") == 0;

    system.x11 = (p == "X11") || (p.indexOf("Linux") == 0);

    //跳转语句

    if(system.win||system.mac||system.xll){

    alert("PC访问");

    }else{

    alert("非PC访问");

    }

    解决当打开Unity时 提示项目已经打开,而自己之前并没有打开过(可能之前异常关闭)的问题

    当打开Unity时 提示项目已经打开,而自己之前并没有打开过(可能之前异常关闭) 发生这种情况时 打开项目目录中的 Temp文件夹,可以找到 一个 UnityLockfile 文件 将这个文件删除就可 ...

    打开Excel时提示"您尝试打开的文件**.xls的格式与文件扩展名指定的格式不一致"

    问题描述:     系统安装了WPS时,Analyzer导出excel时候,会提示"您尝试打开的文件**.xls的格式与文件扩展名指定的格式不一致",这是Excel的安全问题,   ...

    【原创】打开Excel时提示"您尝试打开的文件**.xls的格式与文件扩展名指定的格式不一致"

    问题描述:     系统安装了WPS时,Analyzer导出excel时候,会提示"您尝试打开的文件**.xls的格式与文件扩展名指定的格式不一致",这是Excel的安全问题,   ...

    访问网页时提示的503错误信息在IIS中怎么设置

    访问网页时提示的503错误信息在IIS中怎么设置 503是一种常见的HTTP状态码,出现此提示信息的原因是由于临时的服务器维护或者过载,服务器当前无法处理请求则导致了访问网页时出现了503错误.那么当 ...

    Win2003打开网页时总是提示添加网址到信任站点的设置方法

    在WIN2003系统中,我们打开网页,或打开网站,或浏览网页时,老是跳出一个窗口提示“添加网址到信任站点”,“网页老是提示添加信任”或“2003每打开一次网页都要加入受信任站点”或“win2003提示 ...

    解决浏览器打开网页后提示“dns_probe_possible”的方法

    使用浏览器浏览网页时偶尔会遇到无法上网且浏览器提示:DNS_PROBE_POSSIBLE 一般有三种情况会导致这样的故障: 1.网络协议出现故障,也就是常说的 DNS 设置问题 2.浏览器中设置问题, ...

    微信内无法自动跳转外部浏览器打开H5分享链接的解决办法

    很多情况下我们用微信分享转发H5链接的时候,都无法在微信内打开,即使开始能打开,过一段时间就会被拦截,拦截后再打开微信会提示 “已停止访问该网址” ,那么导致这个情况的因素有哪些呢,主要有以下四点 1 ...

    随机推荐

    openstack security group and rules python api use

    nova和neutron都可以,但是感觉还是用neutron好. import neutronclient.v2_0.client as neclient neutron = neclient.Cli ...

    HTML 学习笔记 CSS样式(框模型)

    CSS框模型( Box Model)规定了元素框处理元素的内容 内边距 边框 和 外边距的方式 CSS框模型概述 可以用下面的模型图概述

    Brn系列商城4.1正式发布,欢迎大家下载体验

    此次升级内容如下: 独立IP搜索策略 独立文件上传策略 添加退换货功能 重构支付方式 常规性修复和改进 下载地址:http://www.brnshop.com

    [shell] if else以及大于、小于、等于逻辑表达式 [转]

    本文也即3rd Edition的第五章Flow Control之读书笔记,但我们将不限于此.flow control是任何编程语言中很常用 ...

    js小技巧(一)

    事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture();  event.srcE ...

    android AudioRecord 与 AudioTrack的录音加回放的使用

    http://stackoverflow.com/questions/32682952/audiotrack-audiotack-not-playing-fully-recorded-audio

    JPA关系映射之one-to-one

    一对一关联有两种实现方式:一种是共享的主键关联,另一种是一对一的外键关联 1.共享的主键关联:让两个对象具有共同的主键值,以表明他们之间的一一对应关系. Person.java类 public cla ...

    centos 6.5 下 nginx 简单优化_虚拟主机_负载均衡

    # 用了nginx for win很久,安装也是超级简单.# 还是用一下linux版的吧.环境是centos 6.5 x64 # 安装开始: # 先安装依赖 yum install gcc-c++ y ...

    展开全文
  • web H5 网页 浏览器 蓝牙 Bluetooth

    千次阅读 2021-05-19 14:35:35
    @toc 目标 最近正在开发一个项目,项目的需求如下: 在H5(基于vue框架)页面上,通过js调用webbluetooth接口,读取某个蓝牙设备传输的数据,并返回显示。 介绍 背景 随着PWA的兴起,越来越多的web服务被支持。...

    目标

    最近正在开发一个项目,项目的需求如下:
    在H5(基于vue框架)页面上,通过js调用webbluetooth接口,读取某个蓝牙设备传输的数据,并返回显示。

    介绍

    背景

    随着PWA的兴起,越来越多的web服务被支持。但其中一个领域几乎是原生应用的专属领域:与设备通信。长期以来,开发者们一直在致力于解决这个问题。

    The web is excellent for talking to servers, but not for talking to devices
    ……

    于是乎WebBluetooth应运而生,这是一个已经在Chrome和三星互联网上实现的新规范。

    WebBluetooth is a new specification that has been implemented in Chrome and Samsung Internet that allows us to communicate directly to Bluetooth Low Energy devices from the browser.

    Bluetooth Low Energy (BLE)

    维基百科 - 低功耗蓝牙

    Generic Attribute Profile (GATT)

    蓝牙BLE: GATT Profile 简介(GATT 与 GAP)

    GAP 使你的设备被其他设备可见,并决定了你的设备是否可以或者怎样与合同设备进行交互。
    GATT协议 - 通用属性配置

    WebBluetooth API

    通过使用WebBluetooth API,我们只需要几行JavaScript就可以和蓝牙设备进行沟通。

    The Web Bluetooth API aims to do exactly that with a promise-based API, which allows you to interact with many BLE(Bluetooth Low Energy) enabled devices.

    使用条件(prerequisites)

    1. 需要HTTPS
    2. 需要用户给予蓝牙权限,需要用户点击确认
    button.addEventListener('pointerup', function(event) {
      // Call navigator.bluetooth.requestDevice
    });
    
    1. 系统要求,具体的看这里 MDN’s Browser compatibility

    A subset of the Web Bluetooth API is available in Chrome OS, Chrome for Android 6.0, Mac (Chrome 56) and Windows 10 (Chrome 70)

    navigator.bluetooth.requestDevice()

    接受一个定义筛选器的强制对象。这些过滤器用于仅返回匹配某些已发布的蓝牙GATT服务和/或设备名称的设备。

    使用:过滤器

    • Services filter
    navigator.bluetooth.requestDevice({ filters: [{ services: ['battery_service'] }] })
    .then(device => { /* … */ })
    .catch(error => { console.error(error); });
    

    如果蓝牙设备不在这个服务列表里面,我们需要提供完整的Bluetooth UUID 或者16-/32-bit 的排列

    navigator.bluetooth.requestDevice({
      filters: [{
        services: [0x1234, 0x12345678, '99999999-0000-1000-8000-00805f9b34fb']
      }]
    })
    .then(device => { /* … */ })
    .catch(error => { console.error(error); });
    
    • Name filter
    navigator.bluetooth.requestDevice({
      filters: [{
        name: 'Francois robot'
      }],
      optionalServices: ['battery_service'] // Required to access service later.
    })
    .then(device => { /* … */ })
    .catch(error => { console.error(error); });
    
    • Manufacturer data filter
    // Filter Bluetooth devices from Google company with manufacturer data bytes
    // that start with [0x01, 0x02].
    navigator.bluetooth.requestDevice({
      filters: [{
        manufacturerData: [{
          companyIdentifier: 0x00e0,
          dataPrefix: new Uint8Array([0x01, 0x02])
        }]
      }],
      optionalServices: ['battery_service'] // Required to access service later.
    })
    .then(device => { /* … */ })
    .catch(error => { console.error(error); });
    
    • No filters
    navigator.bluetooth.requestDevice({
      acceptAllDevices: true,
      optionalServices: ['battery_service'] // Required to access service later.
    })
    .then(device => { /* … */ })
    .catch(error => { console.error(error); });
    

    开始

    参考文献【1】 给出的是一个通过蓝牙控制灯泡颜色的例子。 我们的实验也是基于他的思路并修改,最终实现目标。

    1.连接蓝牙设备

    首先,要做的就是连接蓝牙设备,这里我们使用的是navigator.bluetooth.requestDevice()这个接口。

    navigator.bluetooth.requestDevice({ filters: [{ services: ['battery_service'] }] })
    .then(device => {
      // Human-readable name of the device.
      console.log(device.name);
    
      // Attempts to connect to remote GATT Server.
      return device.gatt.connect();
    })
    .then(server => { /* … */ })
    .catch(error => { console.error(error); });
    

    2.写入数据

    3.读取数据

    navigator.bluetooth.requestDevice({ filters: [{ services: ['battery_service'] }] })
    .then(device => device.gatt.connect())
    .then(server => {
      // Getting Battery Service…
      return server.getPrimaryService('battery_service');
    })
    .then(service => {
      // Getting Battery Level Characteristic…
      return service.getCharacteristic('battery_level');
    })
    .then(characteristic => {
      // Reading Battery Level…
      return characteristic.readValue();
    })
    .then(value => {
      console.log(`Battery percentage is ${value.getUint8(0)}`);
    })
    .catch(error => { console.error(error); });
    

    4.获取信息并改变(返回显示)

    navigator.bluetooth.requestDevice({ filters: [{ services: ['heart_rate'] }] })
    .then(device => device.gatt.connect())
    .then(server => server.getPrimaryService('heart_rate'))
    .then(service => service.getCharacteristic('heart_rate_measurement'))
    .then(characteristic => characteristic.startNotifications())
    .then(characteristic => {
      characteristic.addEventListener('characteristicvaluechanged',
                                      handleCharacteristicValueChanged);
      console.log('Notifications have been started.');
    })
    .catch(error => { console.error(error); });
    
    function handleCharacteristicValueChanged(event) {
      const value = event.target.value;
      console.log('Received ' + value);
      // TODO: Parse Heart Rate Measurement value.
      // See https://github.com/WebBluetoothCG/demos/blob/gh-pages/heart-rate-sensor/heartRateSensor.js
    }
    

    5.断开连接

    navigator.bluetooth.requestDevice({ filters: [{ name: 'Francois robot' }] })
    .then(device => {
      // Set up event listener for when device gets disconnected.
      device.addEventListener('gattserverdisconnected', onDisconnected);
    
      // Attempts to connect to remote GATT Server.
      return device.gatt.connect();
    })
    .then(server => { /* … */ })
    .catch(error => { console.error(error); });
    
    function onDisconnected(event) {
      const device = event.target;
      console.log(`Device ${device.name} is disconnected.`);
    }
    

    参考文献

    展开全文
  • 如果你正在寻找一款使用Vim风格的键盘操作的浏览器,Qutebrowser考虑一下,Qutebrowser 是一个键盘驱动的类似 vim 的网页浏览器。 目前,Qutebrowser已经在 6.4K,累计分支 824。(Github地址:...
  • QQ浏览器是腾讯研发的网页浏览器,采用双核引擎设计,满足你在不同网页环境下的使用需求,当然,qq浏览器官方版既然是腾讯开发的浏览器,那么当然也能和你的QQ帐号绑定,随时随地都能漫游网页。在我们日常使用电脑时...
  • 如果您看到“喔唷,崩溃啦”这一错误消息或其他错误代码,而没有看到相关网页,则表示 QQ浏览器在加载网页时遇到问题。您可能还会遇到网页加载速度缓慢或根本打不开的情况。请试试以下解决方法。重新加载网页通常...
  • Android调用系统自带浏览器打开网页的实现方法在Android中可以调用自带的浏览器,或者指定一个浏览器来打开一个链接。只需要传入一个uri,可以是链接地址。启动android默认浏览器在Android程序中我们可以通过发送...
  • 当我们使用浏览器浏览网页时,常常想保存内容,目的可能是离线阅读或者是收藏。之前的一个项目用到一些,一并总结。方式一,Snapshot4.0支持此方法saveViewState(),方法源码如下4.0原生浏览器其实是把网页的内容...
  • win10使用浏览器翻译网页的方法:1、在Windows10系统打开浏览器,然后点击浏览器右上角的“设置及更多”按钮 。2、在打开的下拉菜单中点击“扩展”菜单项3、这时会打开扩展设置页面,点击其中的“从...
  • 功能介绍对网页上出现的验证码进行处理,可以由用户手动输入验证码,也可以自动识别验证码。二. 配置验证码对网页上出现的验证码进行处理,可以由用户手动输入验证码,也可以自动识别验证码。在使用验证码识别之前...
  • 标题:智能电视怎么浏览网页?这三款浏览器完美解决!智能电视用户想必都会出现这个问题,很多资源都在手机电脑上,电视屏幕这么大却什么也干不了,但其实智能电视不止看电视玩游戏,功能那么少,小编在这里为大家...
  • 自带浏览器打不开网页

    千次阅读 2021-03-12 13:37:20
    1、浏览器打不开网页的原因的是非常多的,有可能是我们的设置上面出了问题,还有可能我们的浏览器的程序中有个别程序被我们误删了,这都是可能导致该问题的,解决这个问题的话,我们双击电脑桌面上的控制面板;...
  • 如果你是果粉,那么你的iPhone手机自带的浏览器是Safari,这个浏览器体积小,占用资源小,界面简洁,除了实用的浏览网页功能外没有多余设置,朴实到了令人不忍心放弃它的地步。不过,为了用户方便,Safari浏览器也是...
  • 【环球网科技综合报道】Oprea一直是挪威一家广富盛名的浏览器厂商。从黑莓平台到Android平台,Opera浏览器一直是国外不少用户的首选。在国内,Oprea改名为欧朋,意味欧洲的朋友。这位来自欧洲的朋友在Android平台...
  • 1、什么是浏览器浏览器就是一个安装在电脑上的软件(类似于其他的软件,只是功能不同),浏览器有两个功能:将网页渲染出来供用户查看;然后提供用户和用户进行交互的功能。2、什么是服务器:服务器就是一台超级...
  • 使用360极速浏览器就可以保存网页为图片,下面小编就为大家分享一下具体步骤吧。360极速浏览器怎么保存网页为图片?1.保存网页为图片步骤一,在浏览器页面上搜索360极速浏览器,然后认准【官网】进入下载并安装。2....
  • 随着电脑的使用率越来越高,我们有时候可能会遇到对win10系统利用edge浏览器共享网页进行设置,如果我们需要对win10系统利用edge浏览器共享网页进行设置时,要怎么处理win10系统利用edge浏览器共享网页呢?...
  • 了解 Wndows Phone 7 网页浏览器控件 – Part 2Gadget Devloping (HTML Base Application)在多数的 Mobile 系统中,除了原生应用程序的开发平台外,都提供了另一种开发平台,那就是以 HTML 为主的 Mobile Page App ...
  • 标题:网速快但是打开网页慢是怎么回事 浏览器打开网页慢的解决办法汇总为什么宽带网速快但是打开网页很慢怎么办?网页打开速度慢怎么解决?网速是每个网名都非常关心的事情,看似简单的网页浏览,背后其实是一个很...
  • 首页-牛腩新闻发布系统/*/** 创建人:牛腩*/* { /* 把默认值都设置为0 */margin:0;padding:0;border-width:0;}body {font-size: 14px;}a:link,a:visited {/* 鼠标未移上去的超链接的样式, 超链接访问后的样式 */...
  • 安装完linux redhat 5.4,打开浏览器发现显示中文全部成了乱码,原来在安装的时候没有选择安装中文字体支持包,打开系统的镜像,找到中文字体的相关安装包如下:[root@localhost filedata]# rpm -ivh fontconfig-...
  • 第一种方法 在网页空白处鼠标右键,然后点view page source。即可查看源代码。 第二种方法 有的网站不支持右键,那么我们可以在网址前面加view-source。即可查看源代码。
  • 1、在浏览器中右键点击页面,选:审查元素查看网页源码2、在 python3 程序中对比:import reptn_tr = re.compile(r']+>')import requests as reqrsp=req.get('http://www.pythonscraping.com/pages...
  • 获得各种宽高的属性还有公式body {padding: 50px;height: 500px;...}网页可见区域高document.body.clientHeight=height + padding * 2- 滚动条宽度测试的文字12网页可见区域宽document.body.clie...
  • 如今Win10的Edge浏览器代替了该系统的原先浏览器,但大部分用户还是会选择使用IE 11,但是在IE 11浏览器在浏览一些网站时,IE 11浏览器会出现一些网页不兼容的问题,那如何更好的使用运行IE11浏览器呢?一起来看看...
  • 浏览器打开网页:https://www.behance.net/gallery/127832793/MESSA-BOUTIQUE-ALMATY?tracking_source=curated_galleries_architecture 按F12出现以下界面 点击选中箭头 点击后再点击所想下载的图片,出现以下界面...
  • 【走进浏览器】谈一谈浏览器渲染的基本原理

    万次阅读 多人点赞 2021-05-13 19:07:21
    浏览器渲染基本原理 浏览器对于前端工程师,就相当于赛车于赛车手,想要更好的在赛道上驰骋,就需要对自己的赛车有更深入的了解,甚至人车合一,所以本篇文章我们就来打开浏览器的大门,一起...JS 是可以使网页的内
  • 其中有一项功能是用户发送文字消息给公众号,然后公众号返回图文消息给用户,用户再点击图文消息即可跳转到一个网页链接,在微信的内置浏览器中打开。那么问题就来了,这个网页首先涉及到了移动web前端开发,我优先...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 126,201
精华内容 50,480
关键字:

原网页浏览器