1

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

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

编辑:这是我想做的一个例子:http: //jsfiddle.net/JZYWZ/。它触发onclick锚标签的事件,但不跟随新标签中的链接。

4

2 回答 2

3

浏览器对通过 javascript 在新选项卡/窗口中打开链接非常严格。

如果他们允许您在用户按下时让您点击 javascript 并打开一个新标签enter(出于您所知道的合法原因),那么垃圾邮件发送者可能会滥用该功能,在用户执行任何操作时让您点击 javascript 广告和垃圾邮件链接。遗憾的是,浏览器无法判断您的链接页面是合法的,而不是垃圾邮件或货币化的点击诱饵。

使用 javascript 在新选项卡中打开 url的唯一选项几乎是window.open您已经尝试过的:浏览器将始终查看用户的弹出窗口阻止设置以及是否在选项卡或窗口中打开 - 并且默认设置是严格的,尤其是在 Firefox 和 Internet Explorer 中(在 Chrome 和 Safari 中较少)。


您不会与浏览器的反垃圾邮件防御作斗争的一种可能的替代方法是在模式覆盖中打开内容(如果您需要多个页面,则基于 iframe)。这是一个示例库

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

模态叠加被广泛使用并且可能为用户所熟悉。例如,它们现在是共享页面、登录和其他简单交互或辅助内容的标准。示例

在此处输入图像描述

于 2013-09-04T15:30:51.813 回答
1

编辑

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

$('input[type="text"]').on('keyup', function(event){
    if(event.keyCode === 13){
        DoSomeStuff();
        window.open($('a').attr('href'));      
    }
});
于 2013-09-04T14:56:08.940 回答