在ipad上的jquery window.open(url)

时间:2012-07-17 13:18:46

标签: jquery ipad

<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />     

$('#btn-fb-share').click(function() {
        $('#btn-fb-share').attr("disabled", "disabled");
        window.open(url,"Mywindow","location=yes,menubar=yes");
    });

在我的Ipad上(我在主屏幕上显示网站的快捷方式)链接无法在新窗口(Safari)中打开。我怎么解决这个问题?在我的电脑上,链接在新窗口中正确打开。

编辑:我会尽力解释清楚。

发生了什么:我的网络应用程序打开了与我的应用程序相同的窗口中的URL。 Process Flow Is

应该发生的事情是:Facebook页面在Safari中的新标签页面中打开。 (如果我通过safari而不是通过我的网络应用程序打开我的网站,我可以证明这一点。)

Process Flow should be

我希望你现在可以看到差异。我需要在新的标签页面中打开Safari中的链接。但是现在它在我的窗口中保持打开状态,在那里我没有“返回按钮”。

这两张照片的唯一区别是。第一张图片是我的主屏幕上保存的网站。第二张图片是直接在Safari中打开的网站。

1 个答案:

答案 0 :(得分:4)

谷歌搜索并找到了this thread on macrumors.com,并提出了相同的问题解释:

对于我想在WebApp中打开但未在Safari中打开的链接,我使用:

<a onclick="parent.location='http://url.com/page.html'">Link</a>

对于我想在Safari中打开的链接,我使用标准的HTML链接:

<a href="http://url.com/another_page.html">Link</a>

所以我进行了另一次Google搜索,找到了如何检测您是否在JavaScript中使用iOS:http://forrst.com/posts/JavaScript_iOS_Detection-Ofa

这是我的解决方案:

var url = "http://www.google.com/";

// Get the user agent string
var deviceAgent = navigator.userAgent;
// Set var to iOS device name or null
var ios = deviceAgent.toLowerCase().match(/(iphone|ipod|ipad)/);

$('#btn-fb-share').click(function() {

    if (ios) {
        // This is the line that matters
        $(this).attr('href', url);
    } else {
        // Your code that works for desktop browsers
        $('#btn-fb-share').attr("disabled", "disabled");
        window.open(url,2789432749274249,"location=yes,menubar=yes");
    }
});

我在Chrome桌面上测试了它,在iOS上从Safari和主屏幕WebApp测试了它。以下是我的工作测试的链接:http://flackend.com/other/ios-test/

请注意,您需要将链接的target设置为_blank,以便在iOS上的Safari中的新标签页中打开(如果您在Safari应用中打开它,则不是来自WebApp实例) 。您可以直接在HTML标记中设置它,也可以使用attr使用jQuery进行设置。