AngularJS应用程序在桌面上运行良好,但在移动设备上无法正常呈现(实际代码正在显示).这是在Android手机上.
我想看看控制台中显示的错误.
是否可以在移动设备上的Chrome应用程序上打开JS控制台(就像在桌面上一样)?
单击(触摸)iOS中的链接(或chrome或firefox)时,链接后面会出现灰色背景(仅在您持有时).有没有办法使用CSS删除此功能?
请参阅下面的示例图片:
我有一个网页,我们可以打电话给它entry.html
.
当用户进入此页面时,javascript代码(见下文)正在尝试将用户深层链接到本机iOS/Android应用程序.
如果深层链接失败(可能是因为设备上没有安装应用程序),用户应该"退回"到另一个页面 - 让我们调用它fallback.html
.
这是运行的javascript代码entry.html
:
$(function(){
window.location = 'myapp://';
setTimeout(function(){
window.location = 'fallback.html';
}, 500);
});
Run Code Online (Sandbox Code Playgroud)
这是一种标准的深层链接方法,建议在整个网络中使用; 尝试深层链接,如果超时触发它意味着深层链接没有发生 - 所以回退.
这很好用,因为设备上安装了很长的应用程序.
但是如果没有安装应用程序,这是尝试深层链接时的行为:
移动Safari:我看到一条警告消息说"Safari无法打开此页面......"片刻,然后它正确地回落fallback.html
- 这是预期的行为.
移动Chrome是我的问题.
当没有安装应用程序时,浏览器实际上被重定向到myapp://
网址,这当然是无效的 - 所以我得到一个"未找到"页面,并且不会发生回退.
最后 - 我的问题是:
如何修复我的代码,以便FALL-BACK也会在移动Chrome上发布?就像移动Safari一样?
注意:我看到LinkedIn移动网站正确地使用Safari和Chrome,无论是否安装了应用程序,但我无法追踪负责它的代码:(
注意2:我尝试添加一个iframe
而不是window.location = url
,这只适用于Safari,即使安装了应用程序,移动Chrome也不会在追加iFrame时进行深层链接.
谢谢大家!
更新:
我找到了一个不错的解决方案,并回答了我自己的问题 看到我的解决方案的已接受答案
在Safari动画延迟中,我在Safari中遇到了令人沮丧的错误.
这个动画在Chrome,Firefox,IE11,IE10的桌面上运行得非常漂亮,但我在Safari中获得了不同的结果.在等量的暂停(由动画延迟控制)之后,包的各个部分都应该显示.
桌面Safari有时会正确显示,而其他时候会减慢行李过渡的第一部分并加速结束,或者它会将几个过渡组合在一起.在iPhone 6上的移动Safari和移动Chrome中,有时它会一起忽略动画延迟并立即转换整个行李.当性能不一致时,我很难排除故障.我添加了一些JavaScript以确保在开始动画之前所有资源都已加载到页面上,但这似乎没有帮助.任何人都知道这里发生了什么?
http://codepen.io/brendamarienyc/pen/qdoOZM
@-webkit-keyframes bag-1 {
0%,
19.9% {
opacity: 0;
}
20%,
100% {
opacity: 1;
}
}
@keyframes bag-1 {
0%,
19.9% {
opacity: 0;
}
20%,
100% {
opacity: 1;
}
}
.satchel-1 {
-webkit-animation-name: bag-1;
animation-name: bag-1;
-webkit-animation-duration: 22500ms;
animation-duration: 22500ms;
-webkit-animation-iteration-count: infinite;
animation-iteration-count: infinite;
-webkit-transform: translateZ(0);
transform: translateZ(0);
opacity: 0;
}
.preload .satchel-1 {
-webkit-animation-name: none !important;
animation-name: none !important;
}
@-webkit-keyframes bag-2 {
0%,
39.9% {
opacity: 0;
}
40%,
100% { …
Run Code Online (Sandbox Code Playgroud) 我希望能够通过 JavaScript 或某种 HTML 元标记禁用移动 Chrome上的点击搜索/触摸搜索功能,该功能每次在浏览器底部都会显示一个横幅用户长按/点击任何文本段落中的单词。
这个 Chrome 功能对我来说是一个问题,因为这个上下文横幅完全覆盖了我正在开发的 Web 应用程序中的工具栏,该工具栏固定在页面底部。
我只在 2015 年发现了这个问题,它引用了这篇Google Developers 文章(也是 2015 年的文章),但除了 CSS“user-select: none”; 之外,提议的解决方案似乎不再有效。不幸的是,禁用用户选择对我来说不是一个解决方案,因为我的网络应用程序需要用户选择才能工作。
我还尝试在“oncontextmenu”事件触发时设置 event.preventDefault() ,这会在用户点击某个单词时禁用搜索工具栏,但据我的经验,当用户长按某个单词时不会禁用搜索工具栏。
到目前为止,对我有用的唯一部分“解决方案”是安装网络应用程序:作为已安装的 PWA,点击搜索不会以某种方式触发。这仍然让我很恼火,我基本上不得不恳求我的潜在用户在移动设备上安装网络应用程序。
我还知道用户可以在 Chrome 标志中手动全局禁用此功能,但我想这对于潜在用户来说也确实很烦人。
我在这里缺少什么吗?您知道有什么方法可以防止长按时触发点击搜索吗?
我正在构建一个网站,每个部分使用 100vh。然而,在移动浏览器上,这会导致糟糕的 UI,因为视口高度会随着地址栏的隐藏/显示而增加/减少(例如在 Chrome 上)。有什么办法可以防止滚动时地址栏自动隐藏?
Freelancer 网站有一个解决此问题的实现。有人可以解释这是如何完成的吗? https://m.freelancer.com
我正在"现代化"我们的登录小部件以使用Chrome自定义标签,因为Google将在几个月内开始使用网页浏览来阻止OAuth请求.
登录小部件与我们的身份服务一起使用,该服务支持经典的"用户名和密码"登录和社交登录,通过Google/Facebook /授权代码流中的OAuth2"客户端"播放...因此Google的授权代码将传送给此身份服务,它又为我们的登录窗口小部件提供访问令牌.
访问令牌通过客户端重定向传递回移动应用程序:
window.location.replace('com.acmeusercontent.tenants.abc:\/setTokenData?accessToken='+access_token+'#');
Run Code Online (Sandbox Code Playgroud)
一切都适合经典登录:用户填写用户名和密码并提交,返回访问令牌,重定向到自定义URI方案会触发我的RedirectReceiverActivity的intent-filter.
但是,对于社交登录,重定向没有任何反应,除了Android监视器中的这一行:
I/chromium: [INFO:CONSOLE(0)] "Navigation is blocked: com.acmeusercontent.tenants.abc:/setTokenData..."
Run Code Online (Sandbox Code Playgroud)
需要明确的是:对于经典登录和社交登录,客户端重定向完全相同,但在经典登录后,允许在社交登录后被阻止!并且,如果我向窗口小部件添加一个按钮,该按钮在社交登录后执行完全相同的重定向,则只要用户单击它就可以再次允许.
这让我感到困惑: - 为什么重定向有时会被允许,有时会被阻止?- 除了要求用户在社交登录序列完成后单击按钮之外,还有什么方法可以解决这个问题吗?
我尝试了我能想到的一切:使用"intent:"语法,使用服务器端重定向模拟从代码中单击按钮,......但没有任何作用.此外,我使用Google身份验证示例研究了AppAuth库,据我所知,我做的完全相同.
我有这个代码在html5页面播放视频:
<video autoplay loop id="bgvid">
<source src="video-background.mp4" poster="/poster.png" type="video/mp4">
</video>
Run Code Online (Sandbox Code Playgroud)
问题是它不适用于移动Chrome(Android手机)和手机游戏(iPhone).但它适用于桌面上的"每个"浏览器(使用Safari,Chrome,Firefox测试)以及移动版Firefox(Android手机).
我该如何克服这个问题?
编辑: 添加此代码:
var myVideo = document.getElementById("bgvid");
function playVid() {
myVideo.play();
}
function pauseVid() {
myVideo.pause();
}
Run Code Online (Sandbox Code Playgroud)
如果我添加一个触发函数playVid()的按钮就可以了.所以我认为问题在于自动播放.我试图用load事件触发函数,但它不起作用.
我尝试了以下属性capture
来设置input
元素以尝试选择前置摄像头。user
是正面,environment
背面。
但是,在移动设备(Pixel 1,最新的操作系统)上试用Chrome(最新)时,仍然选择了后置摄像头。
我使用了一个示例片段:
<form action="server.cgi" method="post" enctype="multipart/form-data">
<input type="file" name="image" accept="image/*" capture="user">
<input type="submit" value="Upload">
</form>
Run Code Online (Sandbox Code Playgroud)
(来自https://w3c.github.io/html-media-capture/#the-capture-attribute)
我可以更改手机accept
上的要求video
,以便该属性和其他属性起作用,但该capture
属性不能起作用。
编辑:正在使用最新的Android Chrome浏览器。下一页暗示iOS和旧版Android Chrome不能一起使用capture
,但可以使用capture
。https://caniuse.com/#search=html-media-capture
mobile-chrome ×10
android ×4
css ×4
address-bar ×2
html ×2
javascript ×2
appauth ×1
deep-linking ×1
html5 ×1
ios ×1
mediacapture ×1
mobile ×1
mp4 ×1
oauth ×1
safari ×1