是否可以使浏览器的一部分透明以在 Web 应用程序中显示底层桌面/窗口? [关闭]
Posted
技术标签:
【中文标题】是否可以使浏览器的一部分透明以在 Web 应用程序中显示底层桌面/窗口? [关闭]【英文标题】:Is it possible to make part of the browser transparent to display underlying desktop/windows in a web app? [closed] 【发布时间】:2011-03-12 14:15:24 【问题描述】:我正在开发一个 Web 应用程序(旨在作为富客户端运行工作,并且能够负担需要任何(甚至是夜间构建)版本的 Chromium Firefox)。
应用程序界面背景是透明的(显示底层窗口或桌面)。我怎样才能做到这一点?遵循标准并不重要,但会很好。
主要目标平台是 Linux。
更新 解决在 2010-07-07T01:44Z 时收到的 cmets 和答案。
技术上这与代码交互和打破“沙盒”无关。这是关于窗口组合的。我什至认为它可以在一个集成的窗口管理器中很容易地实现,即使浏览器也不知道这一点 - 只需用底层内容替换一些无用的颜色(例如“紫红色”在 Windows 9x 时代被广泛用于此)。
政治上,这可以而且应该是一个受限制的功能(例如本地文件和网络摄像头访问),可以允许受信任的 Intranet 应用程序(本地基于 Web 技术的富客户端应用程序)似乎是一种趋势 - Firefox 和 Chromium 实现了越来越多的功能来促进这一点)并且禁止未知的 3 rd 方网站(但这需要浏览器和窗口管理器之间更复杂的交互)。
我之所以喜欢它的原因是因为我想构建一个跨平台(Linux、Windows、Mac)、零安装、外观精美的富客户端应用程序(不意味着用作 Internet 网站)使用 Web 技术(如 html5、CSS3 和 javascript)。我什至可能会寻求使用一些无浏览器窗口的技术来运行它(我听说过 Mozilla Prism 和 XulRunner,KDE 和 Windows 提供将 HTML 用于桌面小部件,Chromium 旨在提供类似的东西,等等)
【问题讨论】:
是的,我认为你不会走得太远。 默认背景为白色,因此您将始终将其“隐藏”在您的视口中。 想象一下,如果垃圾邮件发送者可以在您的桌面上显示 他们的 虚假警报框,他们会怎么做...“Windows 检测到病毒 - 单击确定删除”:P跨度> @alex,@rockinthesixstring:叹息。 SO 在这里,所以我们可以对问题提供技术答案,而不是推测他们的意图。想象一下,如果“电子邮件”不存在,有人来这里询问公共电子地址和“smtp”服务器,因为它对垃圾邮件发送者开放......? @andy,这就是我们将其发布在“cmets”中而不是作为答案的原因。 cmets 在这里评论这些想法和答案。答案在这里回答这个问题。我尽力在下面的答案中“回答”了这个问题……但这并不能阻止我评论这个想法的疯狂及其实施的后果。 【参考方案1】:这在“当前”是不可能的,但没有技术原因导致浏览器无法为此提供专有 API,使用非标准 html/css/js。
但是,这就是浏览器实际实现此功能然后将其公开为 API 所需要的,即使那样它也将是特定于浏览器的。
更新(有些人可能误解了我的回答???):
我正在为这个问题提供技术背景。当然没有人会实现这一点,但我说这在技术上是可行的。
此外,这样做不会破坏沙盒模型。浏览器本身(暂时忘记 API)可以以任何它想要的方式实现透明度。一旦它可以连接到它的 Javascript 引擎,并创建一个愚蠢的调用:Chrome.Element("").WeirdTransparency()
发问者更新更新:
你的意思:
我喜欢它的原因是 我想建立一个跨平台 (Linux、Windows、Mac)、零安装、 外观精美的富客户端应用程序 (不打算用作互联网 网站)
AIR 有点涵盖 90% 或您的要求。它仍然需要一个小的安装,但除此之外,你正在运行......
【讨论】:
技术原因是它不符合标准。 @alex 在上面提到了另一个技术原因“想象一下如果垃圾邮件发送者可以在您的桌面上显示他们的假警报框会做什么......“Windows 检测到病毒 - 单击确定删除”: P" 这不是技术原因。符合标准并不能“定义”浏览器 如果firefox实现了这个功能,我会立即停止使用。 就问题而言,这既不存在也不存在【参考方案2】:我确信浏览器开发人员需要很多“灵感”——也就是 $$$ 才能做到这一点。目前,这并不是很多人都在寻找的功能。
由于标准合规性在所有浏览器开发人员的优先级列表中都非常重要,因此开箱即用将是一个问题。即因为它没有 CSS/HTML 支持,并且标准是具有白色背景。这意味着他们需要在标记中的某处使用自定义“标志”来告诉它关闭白色背景。
这将是实现“功能”的浏览器独有的,使用任何其他浏览器的任何其他人都不会知道它。
【讨论】:
+1 完全正确 - 我敢说在此之前浏览器应该处理的事情有 100 多种。 你的意思是像window.backgroundColor = 'transparent';
这样的标志?
@Xedecimal 我注意到你的消极攻击性评论,但你会注意到这个答案是在 2010 年发布的。你能链接到window.backgroundColor
上的文档吗?我想亲眼看看。
哈哈,那还不算被动攻击。我真的认为这将是设置透明度的一个很好的标志,但是我不认为这些(主要)开源和社区驱动的浏览器是为了现金收益,或者他们会在做其他事情。另一方面是安全。如果广告商可以将窗口透明度设置为 0% 或非常低,以使您意外点击广告,这可能会非常糟糕。不确定他们将如何添加该功能并避开安全隐患。【参考方案3】:
您可以通过某种方式获取桌面的背景图像,将其设置为您的 html 背景,并在其中编写任何应用程序。当您在桌面配置中使用活动桌面执行此概念时,我会看到这一点。 (我最大化网页并锁定它 - 让它感觉像我的桌面)
为了获取背景,我现在将其位置放在我的 PC 中。但我认为应该有一些程序化的方式来做到这一点。
这适用于我们的本地桌面。但是你所说的想法,你肯定需要像棱镜这样的东西。但 Firefox 似乎停止了这个项目。 (不过,我将它的转储文件保存在我的 PC 中)。因此,即使您指导他们将棱镜安装在他们的 PC 上,最近的用户也不会拥有棱镜。
然后,如果图像是全尺寸以适合桌面,则此方法有效。否则,我们必须重复它,整个桌面看起来很荒谬。我经常尝试编写 AIR(桌面的 Adobe RIA 平台)应用程序。
我认为您应该尝试学习 Adobe AIR。事实上,它支持所有开放技术。 我不是 Adobe 员工 :) 以防你认为我在推广 AIR。
【讨论】:
【参考方案4】:这在 Electron 中是可能的。通过在主体上设置透明背景。
【讨论】:
以上是关于是否可以使浏览器的一部分透明以在 Web 应用程序中显示底层桌面/窗口? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何构造 FCM 推送通知以在 Flutter(Android 和 iOS)的默认系统 Web 浏览器应用中打开指定的 URL
什么是HTTP协议?什么是HTTP RFC以及不同的版本介绍。web是否只能基于浏览器?