我从移动设备上做了很多开发工作.有没有办法让JS访问来自CONSOLE.LOG输出中移动浏览器?
更新:好的。因此,这看起来像是另一个错误。我在chromium.org上发现了一些票,说明基本相同的问题。在他们的情况下,他们将其显示为滚动问题,因为作为Web应用程序,它不会在输入焦点和IME弹出窗口上调整视口的大小,因此他们无法向下滚动到低于IME的输入字段,并且不会自动向上滚动。我的不使用普通的输入字段(尽管xterm.js 实际上使用了一个,但您永远都看不到它),但是原因和结果是一样的:当IME弹出时,视口不会调整大小,因此也不会触发调整大小事件。门票摘录:
请注意,我不确定我们是否要使屏幕键盘特别好,甚至完全不使用全屏API,因为这主要用于视频和全屏游戏。支持出于某种原因使用全屏API的“常规网站”的优先级较低。
票证中的工程师认为,尽管从2015年到现在的工作中一直存在投诉,但是这被认为是极低的优先级。显然没有计划解决上述问题,尤其是由于Firefox具有相同的错误。
因此,我的结论是解决该问题的唯一现实方法是,如果希望全屏显示,则包括一个内置的HTML5 OSK。很好,因为我已经在进行这项工作。由于它是一个终端仿真器(有点类似于Android的Termux),因此需要完整的101个键盘支持。目前,我使用的Hackers Keyboard效果很好,并将PWA的“显示”设置为“独立”(我不确定它是否可以作为“即时应用”使用,但确实可以通过Chrome或Android浏览器。仍然是Chrome)。
如果周围有黑客可以让用户使用其本机IME并适当调整视口大小,那么我很乐意听到,也可以从帖子中看到其他人也可以。我要保留这张票,以便具有相同问题的开发人员不要将时间和精力浪费在不支持的事情上,希望有人能找到解决方法。就我自己而言,我将继续使用所述的内置HTML5 OSK。
以前:我有一个网络应用程序已经使用了一段时间了。这是一个基于Web的专业终端,使用xterm.js作为客户端的基础。自从移植到全屏PWA以来,我一直在“独立”中使用它。在移动设备上,对于这样的应用程序来说,屏幕不动产非常珍贵,因此全屏显示非常理想-如果我可以消除以下障碍:
Android上的IME(软键盘)与应用重叠,而不是调整视口的大小,从而使其无法在全屏模式下使用。
弹出IME时,导航栏图标与应用程序顶部重叠,这是不希望的,因为全屏的整个要点是声称只有一英寸的小数,它可能是终端中的文本的另一行或两行。
我敢肯定,第一个解决方案是可以解决的,但是我尝试过的任何方法都没有运气。第二,我不太确定。
我计划实施一个自定义的内部IME,可以解决此问题,但还只是完成了一半,我希望用户仍然可以选择使用设备上本机安装的IME。
想法,有人吗?
另外,如果有办法可以计算出软键盘的高度差,我可以只在焦点事件中在脚本中设置高度,但是我不确定该怎么做,因为它已经有了处理程序来调整font-size / cols / rows监听resize事件,这就是为什么在这种情况下它可以正常工作的原因。
更多信息:
它可以正确安装到应用程序抽屉中,提示安装,已注册服务工作人员等。如果我在清单中设置了“ display”:“ standalone”,则当IME弹出或隐藏时,它可以正确调整大小,但是在设置时不会调整大小“ display”:“全屏”。它有一个很好的包装,带有所有推荐的PWA的口哨声。该应用程序包装在iframe中。只要iframe更改了IME的大小,其余的都会随之变化。
我尝试了固定位置和绝对位置,高度100%和100vh,并尝试在身上设置各种组合。我本来希望它能正常工作。
不久之前,在将其设置为PWA之前,我已经插入了一个使其全屏显示的功能,并且可以为IME调整大小。唯一的问题是导航栏上的图标与应用程序顶部重叠(如果我没记错的话,当IME隐藏时,它们并没有消失,尽管它们现在作为PWA使用了)。
在这种情况下,独立模式和全屏模式之间的唯一真正区别是在独立模式下,应用程序的顶部停在导航栏上。差异不大,但意义重大,因为在手机上横向放置整整一两行,具体取决于用户将字体设置为多大(字体会自动调整大小,以及行/行的数量)。调整大小事件时,通过+/-图形控件在终端中输入文本)。
这是iframe:
<iframe src=1ndex.html style="
position: fixed; left: 0px; top: 0px; width: 100%; height: 100%; outline: none; border: none;
"></iframe>
Run Code Online (Sandbox Code Playgroud)
我不认为meta视口标记很重要,但是在这里。浏览器页面缩放不应该继续进行。它是一个终端客户端,具有显式的GUI控件来更改字体大小和相应的行数/列数以适合iframe。无论如何,无论是在清单中设置的“全屏”之外,还是在浏览器镶边,“添加到主页”(在添加到PWA的端口之前)等任何其他方式下,它都可以正常工作。以显示为“全屏”的PWA的形式安装到应用程序抽屉中(但在PWA移转之前通过js设置为全屏显示时则不是)。
<meta id=viewport name=viewport
content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"
>
Run Code Online (Sandbox Code Playgroud)
这是清单的稍作修改的副本,可用于全屏显示:
{
"name": "asdf",
"short_name": "asdf",
"description": "asdf,
"scope":"/asdf/",
"start_url": "https://asdf.com/asdf/index.html",
"display": "fullscreen",
"background_color": "#000", …
Run Code Online (Sandbox Code Playgroud) 我需要在 Windows 7 到 10 的登录屏幕上运行 GUI 应用程序。
我有一个 nodejs 应用程序注册为一项服务,它使用 node-windows 模块作为系统(默认)运行。这似乎是我需要的先决条件,但还需要更多的东西。
该应用程序只是一个连接到套接字服务器的基本套接字客户端,目前还没有什么特别之处。
我在想,如果我使用 child_process.spawn() 打开提升的命令提示符和/或以另一个用户身份运行——但是什么用户?系统不这样做。我在想 winlogon.exe 以什么方式运行,但这似乎不是 SYSTEM,即使它在任务管理器中显示的那样。
如果您具有系统级别的访问权限,是否有 Windows 命令在登录屏幕中运行 GUI?
更新:
好的。到目前为止,我有一个类似 telnet 的反向客户端作为 SYSTEM 用户下的 Windows 服务在“远程主机”上运行。它定期连接到测试服务器文本界面(也是节点),您可以从中输入 nodejs 命令——基本上是一个自制的 JS REPL。
我能够在会话 0 下生成一个隐藏的交互式 Windows 命令提示符,键入命令并通过我的小型反向命令行终端获取输出。
Obvi,加密和安全在这里很重要,但现在 Windows 运行在我笔记本电脑上 Linux 内的 VM 中,应用程序仅通过仅主机虚拟网络上的专用 NIC 相互通信,因此数据包是不会溢出到真实网络上。
在会话 0 的 Windows 命令提示符下,我尝试运行我的远程控制 GUI 应用程序。我没有看到 GUI,而是收到以下错误:
[5472:5492:0828/031356.901:ERROR:gpu_process_transport_factory.cc(1024)] 丢失 UI 共享上下文。
如果我tasklist,我得到:
winlogon.exe 2140 Console 3 6,704 K 未知 NT AUTHORITY\SYSTEM 0:00:00 N/A
LogonUI.exe 4772 Console 3 …