【问题标题】:HTML <a> Native Click EventHTML <a> 原生点击事件
【发布时间】:2011-05-01 12:15:34
【问题描述】:

有没有办法在 javascript 中以编程方式调用标签的原生点击事件? .trigger('click') 或 .click() 函数将不起作用,因为它们触发的是链接的 onClick 事件,而不是 URL 后面的事件。我需要以编程方式单击一个隐藏链接,然后按照该链接到同一浏览器中的新选项卡。 Window.open 也不起作用,因为这会导致弹出窗口,我试图避免这种情况。我需要这个,因为我在服务器端动态生成一个 URL 并通过 JSON 发送回响应。然后,我使用生成的 URL 填充隐藏链接的 HREF 属性。如果我能得到关于如何做到这一点的答案,我将不胜感激。

【问题讨论】:

    标签: javascript html click native href


    【解决方案1】:

    如果您要使用 JSON 响应填充 HREF,为什么不直接将其存储在变量中,当您想要访问它时,window.location = yourVariable;

    【讨论】:

    • window.location 对我不起作用,因为我不想在当前选项卡中打开链接并替换当前页面。我需要它才能转到新标签。
    • 同意,我没有看到将 URL 分配给隐藏链接的意义,以便您可以单击它。提供了更直接的方式来导航到新位置。
    • @usherjer 如果您希望它在新选项卡中打开,请使用window.open。是否在选项卡或新窗口中打开完全取决于浏览器,因为并非所有浏览器都支持选项卡。没有办法专门指示浏览器在新标签页中打开链接。
    • 我试图将它放在隐藏链接中的原因是因为链接单击的功能允许打开一个新选项卡,而不会替换当前选项卡。如果我使用 window.location,它会用新的 URL 替换当前选项卡。
    • @usherjer:实际上并不能保证在新选项卡中打开链接,因为浏览器会查看该选项的内部设置。如果我的浏览器配置为在同一窗口中打开每个链接,您唯一的其他选择是window.open
    【解决方案2】:

    除非您希望它仅在 IE 上运行,否则我无法为您提供答案,但我可以告诉您问题出在哪里。问题是target=_blank。试试下面的代码作为测试——注意它会带你到 Google.com——然后试着写“_blank”作为目标。这似乎是浏览器唯一不允许的。您的问题的部分答案是fireEvent() 适用于 IE,dispatchEvent() 适用于其他一切。如果其他人可以改进此代码,我也将不胜感激。

    <html>
    <head>
    <script type="text/javascript">
    window.onload = function fireElement() {
    var target=document.getElementById('foobar');
    if(document.dispatchEvent) { // W3C
    var oEvent = document.createEvent( "MouseEvents" );
    oEvent.initMouseEvent("click", true, true, window, 1, 1, 1, 1, 1, false, false, false, false, 0, target);
    target.dispatchEvent( oEvent );
    }
    else if(document.fireEvent) { // IE
    target.fireEvent("onclick");
    } 
    }
    </script>
    
    </head>
    <body>
    <div>
    <a id="foobar" target="" href="http://www.google.com"></a>
    </div>
    </body>
    </html>
    

    【讨论】:

      【解决方案3】:

      据我所知,无法通过javascript调用链接的本机点击功能。您可以使用 .click() 引用 onclick,但在调用之前,本机点击仍将运行。因此,如果您想在单击链接之前更改该链接,则必须单击该链接两次才能将您发送到更改后的链接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-16
        • 2018-09-10
        • 2016-07-16
        • 2014-08-24
        • 2021-08-23
        • 1970-01-01
        • 2011-03-03
        • 2021-03-06
        相关资源
        最近更新 更多