如何从Javascript函数中导航到href

如何从Javascript函数中导航到href,javascript,preventdefault,Javascript,Preventdefault,我有一个webapp问题。 iOS设备(iPad)中的双触式特定按钮 触发一个单击事件,该事件触发一些iOS默认行为,从而缩放页面。 我想阻止这种事情发生 因此,我在click事件的顶部元素elementId1添加了一个eventListener 我选择顶部元素elementId1,因为这种副作用会发生在各种嵌套元素上,我希望在html元素层次结构的顶部有一个单一的catch all click eventListener,以防止这种情况在多个位置发生 eventListener触发一个函数on

我有一个webapp问题。 iOS设备(iPad)中的双触式特定按钮 触发一个单击事件,该事件触发一些iOS默认行为,从而缩放页面。
我想阻止这种事情发生

因此,我在click事件的顶部元素elementId1添加了一个eventListener

我选择顶部元素elementId1,因为这种副作用会发生在各种嵌套元素上,我希望在html元素层次结构的顶部有一个单一的catch all click eventListener,以防止这种情况在多个位置发生

eventListener触发一个函数onClickTopElement,该函数调用
event.preventDefault()
eventListener设置了以下属性:

  • 捕获:false-这会导致事件在冒泡阶段触发,即在上升过程中而不是下降过程中触发 这意味着:
    • 事件首先在元素上激发,该元素可能有一个在单击时触发的函数,并执行其设计的操作
    • 当事件冒泡时,它会到达elementId1元素,该元素触发函数onClickTopElement,该函数调用
      event.preventDefault()
      ,该函数将禁用放大页面的iOS默认行为
最终结果是,双击按钮不会导致页面放大。好!

这很好,但会产生另一个副作用。
有一个带有href标记的按钮(elementId4),单击该按钮可转到另一个页面。
这是由浏览器的默认行为完成的。
但由于elementId4嵌套在elementId1中,因此现在可以防止默认的onClick行为

一种解决方案是将特定的onClick eventListener添加到elementId4,并执行默认行为的操作,即导航到href。
在onClick eventListener函数中导航到href的命令是什么。


谢谢

这就是您想要的:
window.location=event.currentTarget.href
?为什么在另一个按钮中有按钮???您不能在另一个按钮中包含按钮或链接。很难回答您的问题,因为您所做的是违反W3C的specs@Barmar,我发现我可以用:
  • 替换
  • ,但后来我意识到我有很多这样的按钮,所以这个解决方案不实用。取而代之的是,我在感谢中重新表述了我的问题。这是否回答了你的问题?
    elementId1
      elementId2
        elementId3
      elementId4
    
        // add catch-all 'click' eventListener, at the top of the html elements so that on iOS the side-effect of scaling-the-page when double-touching never happens
    
        let element1 = document.getElementById('elementId1');
        element1.addEventListener( 'click', onClickTopElement, {capture: false, passive: false} );
        function onClickTopElement(event) {
            // prevent from trickling the event, when touching, which causes, in iOS to zoom the entire page
            event.preventDefault();
        }