iPhone Safari Web App 在新窗口中打开链接
在iPhone Safari中,Web应用程序打开链接时会在新窗口中打开。这个问题的原因是使用了过时的jQuery方法.live()。解决方法是使用最新的jQuery方法$(document).on('click', 'a', function(){...})来绑定点击事件。
在jQuery中,.live()方法用于绑定事件到所有链接,包括尚不存在的链接,而.click()方法只绑定到当前存在的链接。因此,.live()方法更好用。
但是,.live()方法在jQuery 1.7中被废弃,在1.9中被移除。所以,应该使用$(document).on('click', 'a', function(){...})来代替。
以下是一个使用最新的方法解决这个问题的示例代码:
$(document).on('click', 'a', function(event) { event.preventDefault(); window.location = $(this).attr("href"); });
希望这个解决方法能帮到你,谢谢!
iPhone Safari Web App opens links in new window的问题是因为iOS将Web应用中的链接视为应该在Safari中打开的内容,而javascript的位置更改被视为允许停留在Web应用中的操作。上述代码的作用是阻止默认的链接行为,并用js导航调用来替代。
解决方法是使用以下代码:
var a=document.getElementsByTagName("a"); for(var i=0;i
如果要强制iPhone Web应用程序在javascript位置更改时在Safari中打开页面,可以使用以下代码:
[].forEach.call(document.links, function(link) { link.addEventListener("click", function(event) { event.preventDefault(); window.location = this.href; }) });
这段代码没有副作用。当用户点击超链接时,可以运行上述代码。
问题出现的原因是由于在iPhone Safari Web App中打开链接时,会在新窗口中打开链接。解决方法是使用以下代码:
然而,这段代码在公司的“联系我们”页面中会出现问题,不是显示该页面,而是打开“地图”应用并标记出我们的办公室。造成这个问题的原因是什么,我们该如何解决呢?
我不确定。如果您删除此代码,是否不会出现此问题?也许您可以发布您网站的链接?或者提一个新的问题,可能会更好。
这仅在运行您提供的代码时发生,而不是没有运行它时。我自己是一名Web开发人员,不明白为什么会以这种方式处理链接。我没有页面的URL,因为目前没有运行该代码,所以您不会注意到它。此外,它也会影响到常规的Safari,而不仅仅是独立的应用程序。谢谢您的回答!
这应该是被接受的答案,它在我用PHPRunner制作的iPad1全屏客户端上运行得很好,只需要将代码放在头部。不确定为什么它如此混淆,因为它似乎是一段简洁的代码,可以以清晰的方式编写,而不会产生太多的带宽开销...这只是挑剔,但我真的想说声谢谢。
这会破坏一些使用js函数的href="#"链接,比如Bootstrappy。
幸运的是,我的同事有一些闲置的代码。我会添加一个答案。
如果按照以下方式使用,它可以完美地工作。如果我尝试从一个js文件中包含这段代码,它就不再起作用了。(只是想告诉大家不要这样做,因为我浪费了很多时间找出这个问题)