当我将“网络应用”添加到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之前编写的。有新方法吗?我做错了吗?
感谢您的帮助
答案 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许多应用程序,它工作正常。
由于 杰克博伊尔斯