问题标签 [google-chrome-webview]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Google Chrome 应用程序:Webview 行为
在研究<iframe>
有关 Chrome 扩展程序的问题时<webview>
,Chrome 应用程序中的应用程序引起了我的注意并引起了我的兴趣。
所以我决定做一个我面临的问题的小例子,<iframe>
看看是否<webview>
能解决。根据我对观看 Chrome Dev 视频的理解,webview
运行在与您的应用程序不同的进程中;它没有与您的应用相同的权限。所以我假设如果运行中的内容以某种方式与“主线程”(应用程序)分开,我猜它们的内容将彼此分开执行,而不是阻塞应用程序或其他,以防它们中的任何一个可能有可能长时间运行的 js 执行。因此我做了以下事情:
背景.js
清单.json
窗口.html
其中三个网页视图是普通网页,第四个只是一个长时间运行的 js 文件的示例,您可以检查代码,或者我可以稍后提供。如果我打开 4 个 google chrome 浏览器窗口,输入地址,按回车键,我会观察到:3 个页面立即加载,而另一个长时间 js 执行的页面仍然可以工作。
如果我在网页中执行此操作,用于打开这 4 个网页,因为它们都在同一个进程中,如果 1 个页面由于 js 执行而变慢/阻塞,则所有其他页面都将被阻止。
现在使用 Chrome 应用程序,我注意到这种行为有一些有趣和奇怪的地方。我注意到以下内容:
- 如果我只加载前 3 个网页,加载速度很快并且“同时”出现;
- 如果我按原样加载所有网页,我会看到前 3 个页面正在加载,最后一个页面因为它有很长的 js 执行需要他的时间然后它显示(这将是最佳行为),因为它们是不同的过程,它们应该'不依赖于 webview 是否慢,其他人必须等待;
- 现在,如果我评论第三个,刷新并执行应用程序,我看不到 webview,直到完成 longscript 的那个。(为什么会这样?)
- 上面的一点是随机的,要么发生如我所提到的,要么没有发生。
- 最后,让我们添加另一个
<webview id="wv5" style="width: 450px; height: 300px; border: 2px solid red" src="http://developer.chrome.com"></webview>
,对我来说会发生什么:前三个被加载,第四个正在执行,完成并显示后,我看到第五个渲染。
我的主要问题/怀疑是围绕行为,因为它们实际上是在一个单独的进程中运行,为什么它没有与浏览器窗口相同的行为,例如,为什么那个 webview 会阻止其他人工作/渲染,是不是有意的照原样工作?我是否应该做一些变通方法来检测一段时间后的 webview 是否没有完成以跳过负载并让其他人加载,这样我就可以回到慢速浏览器了?
先感谢您。
javascript - 如何允许在 Google Chrome App 中的 webview 内下载?
我有一个运行在本地 Web 服务器上的 Web 应用程序,我试图通过 Web 视图与之交互。我有一个链接,它将返回一个 PDF,其中内容处置是附件(要求文件由系统默认的 pdf 阅读器下载和打开)。
我已经查看了有关处理 Chrome 应用程序中的权限请求的内容。在这一点上,我什至无法确认应用程序甚至收到了权限请求。难道我做错了什么?大概。它是什么?
这是我的网络应用程序的链接。
这是我的清单。
这是我的JS。
当我单击我的链接时,我没有在控制台上收到我的消息。
google-chrome - 在 Google Chrome 应用程序网页视图中启用 Chrome 扩展程序
我正在使用 gmail、日历等构建 Google Apps Chrome 应用程序(不是扩展程序,而是应用程序)。
我想在我的应用程序中从常规 chrome 运行扩展程序。例如,rapportive 是 gmail 的绝佳扩展。但似乎扩展不在托管在webview
.
有谁知道如何在 chrome 应用程序中启用扩展程序?
javascript - Chrome 应用程序/webview 中的 FB.login
我正在尝试将我们当前的网络应用程序打包到桌面 Chrome 应用程序中,并在 window.html 中使用单行 webview
该网络应用程序使用 FB.login() [1] 并且在浏览器中运行良好,但是,在 Chrome 应用程序中使用它时出现以下消息
我看不出我做错了什么。FB.login() 动作由用户点击触发。
是否需要任何权限?
谢谢
[1] https://developers.facebook.com/docs/reference/javascript/FB.login/
注意:在 Chromium Apps Google 群组上交叉发布
webview - 如何在 Dart google chrome 应用程序中将消息发布到 webview (securityError)
我正在使用 Dart 编程语言构建一个带有 webview 的 Google Chrome 应用程序。该应用程序通过 postMessage 与 webview 内容进行通信。如果我从 DartEditor 运行应用程序(作为 Chrome 应用程序运行)postMessage 工作正常。但是在构建(dart2js)并使用“加载未打包的扩展...”加载到浏览器之后 - 应用程序无法获取 webview contentWindow 并在其上执行 postMessage。
来自 chrome 开发控制台的错误:未捕获的 SecurityError:阻止了来源为“chrome-extension://bpddihniogcgmnlaghkacfagkecgnljo”的框架访问来源为“swappedout://”的框架。请求访问的帧具有“chrome-extension”协议,被访问的帧具有“交换”协议。协议必须匹配。
Google Chrome 版本 36.0.1951.5 dev Dart 版本 SDK 1.4.2,版本 1.5.0-dev.4.2 - 给出相同的错误。
这是演示问题的最小工作示例 - https://github.com/Dumbris/dart_chrome_app_webview_security_error
javascript - 通过 Google Chrome 应用程序 Webview 冒泡通知
我有一个 Google Chrome 打包应用程序并使用 webview 标签来加载远程页面(我无法控制)。该远程页面正在尝试请求通知权限,并且该权限请求似乎没有冒泡到包装 Chrome 应用程序。
我正在使用以下(过于宽松)代码来允许来自 webview 的所有权限请求(并回显所有控制台输出):
我在网上找不到确认信息,但我认为 webviews 中还不允许通知权限。如果我们假设是这种情况,是否有任何其他方法可以强制对不会被 CORS 阻止的 webviewed 站点的通知权限?
javascript - Webview 不断失去焦点
我有一个应用程序,它基本上只是内部公司网站的包装器。这个想法是在我的 Chromebook 上自己的窗口中轻松加载网站,这样当 RAM 变低时它就不会卸载。
我有一个非常简单的应用程序,它有一个使用整个应用程序窗口的 WebView。问题是,每当我从窗口切换回来时,webview 就会失去焦点。这特别烦人,因为它是一个聊天应用程序,我想在 alt-tab 键回到窗口后立即开始交谈。
每次窗口获得焦点时,我都会关注 webview,但是 Window(来自 chrome.windows)和 AppWindow(来自 chrome.app.window)之间的断开连接使得这不简单。我需要的事件只存在于 Window 对象中,但我只能明确获得当前的 AppWindow。理论上,当应用程序首次启动时,我可以得到当前活动的窗口,但这似乎很老套且不可靠。
索引.html
背景.js
样式.css
让 webview 占用整个窗口有点棘手;我不得不使用一些多余的 CSS 属性来让它正常工作。
google-chrome - 从 Google Chrome 应用程序网页视图在新选项卡中打开链接
我有一个带有 webview 控件的 Google Chrome 应用程序。Web 视图中的某些链接旨在在新选项卡 ( target="_blank"
) 中打开。但是,单击这些链接不会执行任何操作,并且右键单击它们不会打开上下文菜单来打开/复制链接。如何启用此类链接?
google-chrome-app - 在 chrome 应用程序的 webview 中杀死 javascript 引擎
是否可以使用 chrome aps api(而不是 java api)在从桌面上的 chrome 应用程序运行的 web 视图中终止 javascript 引擎。
我看到 webview 上有一个终止方法,但它似乎也杀死了渲染功能,我只会停止/冻结在那里运行的 javascript。