Safari Web App Open rel= 在 Safari 中打开 rel= "external",而不是 Web App



我想让我的网站一个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"的链接在新窗口中打开。

最新更新