如何用javascript模拟点击锚标签?

时间:2013-09-04 14:47:54

标签: javascript jquery html

在我的网站上,我有一个div容器,其中包含<input><a onclick="DoSomeStuff();" href="#" target="_blank">元素,用作按钮。现在,DoSomeStuff();根据href元素的值修改input属性。

我需要模仿用户在input元素上按Enter键后点击此锚标记。我知道如何检测此输入,但我不知道如何单击此锚点。 jQuery的.click()在这里不起作用,它只触发锚标记的onclick(),但实际上并没有点击锚点。

修改:以下是我想要做的示例:http://jsfiddle.net/JZYWZ/。它会触发锚标记的onclick事件,但不会跟随新标签中的链接。

2 个答案:

答案 0 :(得分:3)

浏览器对通过javascript打开新标签/窗口中的链接非常严格。

如果他们允许您点击javascript并在用户按下enter时打开新标签(因为您知道这是合法的原因),垃圾邮件发送者可能滥用该功能来点击广告和垃圾邮件用户执行 任何 时的链接。遗憾的是,浏览器无法判断您的链接页是否合法,而不是垃圾邮件或货币化的clickbait。

open the url in new tab using javascript的唯一选项是window.open,您已尝试过:浏览器将始终查看用户的设置,弹出窗口阻止以及是否在标签页或窗口中打开 - 默认设置是严格的,特别是在Firefox和Internet Explorer中(在Chrome和Safari中较少)。


一种可能的替代方法,您将无法对抗浏览器的反垃圾邮件防御措施,即以模式覆盖打开内容(如果您需要,则以iframe为基础)多页)。 Here's one example library

从UI的角度来看,它将是类似的 - 以一种形式向用户提供相关内容,他们可以将其关闭并在完成后返回主页面。

模态叠加广泛使用,可能熟悉用户。例如,它们现在非常适合共享页面,登录和其他简单交互或侧面内容。 Example

enter image description here

答案 1 :(得分:1)

修改

经过一些额外的测试....     

$('input[type="text"]').on('keyup', function(event){
    if(event.keyCode === 13){
        DoSomeStuff();
        window.open($('a').attr('href'));      
    }
});