用户Quentin帮助我解决了这个问题。灯箱在函数中有一个event.stopPropagation();
,阻止事件监视器冒泡。删除后,链接正常工作。
我在honyovk的添加中使用了这个评论,用更优雅的函数替换了stopPropagation:https://stackoverflow.com/a/1089622/3461722
我有一个适用于iOS的webapp,我在其中使用EventListener来阻止在Safari中打开链接。这对于99%的链接都是完美无缺的,但是在Safari中仍然会打开一些特定的链接,原因我不知道。
这是我的Javascript:
// Mobile Safari in standalone mode
if(("standalone" in window.navigator) && window.navigator.standalone){
// If you want to prevent remote links in standalone web apps opening Mobile Safari, change 'remotes' to true
var noddy, remotes = false;
document.addEventListener('click', function(event) {
noddy = event.target;
// Bubble up until we hit link or top HTML element. Warning: BODY element is not compulsory so better to stop on HTML
while(noddy.nodeName !== "A" && noddy.nodeName !== "HTML") {
noddy = noddy.parentNode;
}
if('href' in noddy && noddy.href.indexOf('http') !== -1 && (noddy.href.indexOf(document.location.host) !== -1 || remotes))
{
event.preventDefault();
document.location.href = noddy.href;
}
},false);
}
无法在webapp中打开的链接没有什么特别之处,页面上的其他链接也没有问题。一个不正常工作的链接示例:
<a href="upgrademine.php?m=green" class="button bgreen">Buy</a>
此链接在灯箱中打开,但在其他页面上我也在灯箱中有类似的链接,它们工作正常。我有几个弹出窗口大致相同的链接,只有“绿色”不同,有些还有额外的“&amp; time = 1”,它们都无法在webapp中打开。
是否有人可以查找此代码的错误?