我试图让我的网站成为网络应用。我第一次看到它在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 ="外部"'留在网络应用程序。如果我将它们设定为目标" _blank"。
我想:如果我有一个脚本来查找rel ="外部文件"该怎么办?编辑上面的脚本不起作用。
所以我想要的是一个测试rel = external元素的脚本。如果它发现它的链接仍然没有被触摸,如果它没有在链接中找到rel = external,它就会像:
e.preventDefault();
window.location = $(this).attr('href');
答案 0 :(得分:1)
在Web应用程序中打开外部浏览器窗口(独立) 您需要在window.open函数中使用_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窗口并使用户回到与单击之前相同的位置。
答案 1 :(得分:0)
这个怎么样?
if(! $(this).is('[rel="external"]') ) {
e.preventDefault();
window.location = $(this).attr('href');
} else {
window.open( $(this).attr('href') ); //opens a new window
}
EDITED:在新窗口中添加了一个导致与rel =“external”链接的else条件。