小智 60
不是无缝的.但有一种方法类似于检查弹出窗口是否被阻止.
当您尝试不受支持的URL方案时,Safari会警告用户它不知道如何处理它并保持在同一页面上.
因此,如果您给应用程序调用了一些时间来激活,比如300毫秒,然后做一些其他事情来响应该方案的不存在.
这不是最漂亮但它有效:
function startIThrown(){
document.location = 'ithrown://restart';
setTimeout(function(){
if(confirm('You do not seem to have iThrown installed, do you want to go download it now?')){
document.location = 'http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=293049283&mt=8&uo=6';
}
}, 300);
}
<a href="#" onclick="startIThrown()">Restart iThrown</a>
Run Code Online (Sandbox Code Playgroud)
小智 37
这是一个解决方案,当你从应用程序回来时它没有显示弹出窗口,它假设你已经超过400毫秒:
function startiThrown() {
document.location = appurl;
var time = (new Date()).getTime();
setTimeout(function(){
var now = (new Date()).getTime();
if((now - time)<400) {
if(confirm('You do not seem to have iThrown installed, do you want to go download it now?')){
document.location = 'http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=293049283&mt=8&uo=6';
}
}
}, 300);
}
Run Code Online (Sandbox Code Playgroud)
Tho*_*esk 11
我发现pagehide
事件比依赖系统时间更强大.对于我们这些喜欢非jQuery青睐的人来说,这是片段.
var appurl = 'custom://url';
var appstore = 'https://itunes.apple.com/us/app/your-app';
var timeout;
function preventPopup() {
clearTimeout(timeout);
timeout = null;
window.removeEventListener('pagehide', preventPopup);
}
function startApp() {
window.location = appurl;
timeout = setTimeout(function(){
if(confirm('You do not seem to have the App installed, do you want to go download it now?')){
document.location = appstore;
}
}, 1000);
window.addEventListener('pagehide', preventPopup);
}
Run Code Online (Sandbox Code Playgroud)
小智 7
另一个伟大的(至少在最新的浏览器版本中工作)解决方法是在短暂超时后检查浏览器窗口是否具有焦点,这样只有在URI方案不起作用时才能向用户显示对话框
HTML:
<a class="uri-link" data-uri="qobuzapp://" href="#">URI</a>?
Run Code Online (Sandbox Code Playgroud)
Javascript(在这里使用jQuery):
var windowHasFocus;
$(window).focus(function() {
windowHasFocus = true;
}).blur(function() {
windowHasFocus = false;
});
function goToUri(uri) {
window.location = uri;
setTimeout(function(){
if (windowHasFocus) {
if (confirm('You do not seem to have Qobuz installed, do you want to go download it now?')){
window.location = 'http://www.qobuz.com';
}
}
}, 100);
}
$('a').on('click', function(){
goToUri($(this).data('uri'));
});?
Run Code Online (Sandbox Code Playgroud)
这是一个有效的jsFiddle,只需用你自己的URI方案更新它:http: //jsfiddle.net/mF6TZ/
从iOS 6.0开始Apple推出了智能应用程序横幅,它们可以满足我们大多数人的需求:
包含以下元标记:
<meta name="apple-itunes-app" content="app-id=myAppStoreID, affiliate-data=myAffiliateData, app-argument=myURL">
Run Code Online (Sandbox Code Playgroud)
取自此处: Safari Web内容指南
不,不是来自网页。
归档时间: |
|
查看次数: |
69354 次 |
最近记录: |