iPhone WebApp在safari中打开链接

时间:2012-01-16 23:45:49

标签: javascript iphone mobile-safari web-applications

当我将“网络应用”添加到iPhone上的主屏幕,然后打开它并点击链接时,它会打开Safari。

我已经找到了一些解决方案,但它们似乎没有效果:

iPhone Safari Web App opens links in new window

$('a').live('click', function (event)
{      
var href = $(this).attr("href");

if (href.indexOf(location.hostname) > -1)
{
    event.preventDefault();
    window.location = href;
}
});

http://jakeboyles.com/2011/01/16/how-to-build-an-iphone-and-ipad-web-app/

<a ontouchstart="window.location=yourlink.html' ">Your Link</a>

这两篇帖子/教程都是在iOS5之前编写的。有新方法吗?我做错了吗?

感谢您的帮助

4 个答案:

答案 0 :(得分:1)

一个想法是让您的主屏幕应用程序成为iframe,并使所有锚点都以它为目标。不需要javascript。

可替换地:

$('a').on('click touchend', function(ev){

    $(this).preventDefault();
    window.location = $(this).attr('href');

});

切勿将“touchstart”用于链接等内容。您只想检测用户何时停止触摸链接。检测按键,鼠标点击等同样的事情。它是你要检测的事件的 end

.live已在最新版本的jQuery中弃用,因此从现在开始使用.on(),它可以无缝地包围现存和非现存的元素。

答案 1 :(得分:1)

这个javascript代码适用于iOS 5(它对我有用):

在head标签中:

<script type="text/javascript">
function OpenLink(theLink){
    window.location.href = theLink.href;
}
</script>

在您想要在同一窗口中打开的链接中:

<a href="(your website here)" onclick="OpenLink(this); return false"> Link </a>

代码基于此评论:http://mobile.tutsplus.com/tutorials/iphone/iphone-web-app-meta-tags/comment-page-1/#comment-10699

答案 2 :(得分:1)

这在iPhone 5上运行良好

$(document).ready(function(){

    // Stop the default behavior of the browser, which
    // is to change the URL of the page.
    $("a").click(function(event){
        event.preventDefault();
        // Manually change the location of the page to stay in
        // "Standalone" mode and change the URL at the same time.   
        window.location = $(this).attr('href');
    });
 });

请记住链接到最新版本的jQuery。

答案 3 :(得分:0)

我是那个撰写你所指的文章的人。我仍然使用我的javascript方法,它对我来说很好。 touchstart适用于Web应用程序,因为浏览器需要更长时间才能呈现它。如果你计划makign本地应用程序然后不使用它,但我已经使用touchstart许多应用程序,它工作正常。

由于 杰克博伊尔斯