我想让我的网站一个web应用程序。我第一次看到它的所有链接在safari浏览器打开。在向站点添加脚本后,这就不再是问题了。脚本如下:
if(("standalone" in window.navigator) && window.navigator.standalone){
$(document).on('click', 'a', function(e) {
if ($(this).attr('target') !== '_blank') {
e.preventDefault();
window.location = $(this).attr('href');
}
});
}
只有所有带有'rel="external"'的链接才会留在web应用程序中。如果我将它们设置为目标"_blank"。
我想:如果我有一个脚本,寻找rel="外部文件"。编辑上面的脚本不起作用
所以我想要的是一个测试rel=external元素的脚本。如果它找到了,链接保持不变如果它没有在链接中找到rel=external它会做如下操作:
e.preventDefault();
window.location = $(this).attr('href');
在web应用程序(独立)中打开外部浏览器窗口您需要在窗口中使用_system。打开功能。此外,iPhone Safari有一个错误,关闭新打开的窗口时不能正确地重新绘制父窗口。
var doc = document.documentElement;
var top = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);
$('html, body').animate({scrollTop: 0});
window.open(encodeURI(url),"_system",windowOpenSettings);
$('html, body').animate({scrollTop: top});
return;
所有的滚动只是为了重新绘制IOS窗口,并将用户放回到点击之前的位置。
这个怎么样?
if(! $(this).is('[rel="external"]') ) {
e.preventDefault();
window.location = $(this).attr('href');
} else {
window.open( $(this).attr('href') ); //opens a new window
}
编辑:添加了一个else条件,该条件会导致rel="external"的链接在新窗口中打开。