safari web app在safari中打开rel =“external”而不是web-app

时间:2014-05-06 17:41:23

标签: jquery hyperlink iphone-web-app

我试图让我的网站成为网络应用。我第一次看到它在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');

2 个答案:

答案 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条件。