触发点击而不点击

时间:2017-01-25 09:10:35

标签: jquery html

我创建了一个新闻聚合器网站,该网站还衡量帖子的受欢迎程度。我已经设置了HTML和jquery,因此当您单击该链接时,它还会计算点击次数。

<a class="headline" href="www.example.com/a" target="_newWindow" onclick="incStoryClicksCount('15280681', '_on_click_handler');  return wopen('www.example.com/a');" rel="nofollow">Example A</a>

但是我需要测试以查看它是否有效,查看网站时是否有更简单的方法,而不是多次点击以尝试计算。我正在考虑尝试触发它,因此它在Chrome控制台(F12)中算作点击。但是我不知道我该怎么做。

我正在考虑的另一种选择是在按下Chrome中的f12时更改代码,这样当我稍微移动鼠标或单击按钮时,它就会“点击”。但是我也不知道如何执行它。

5 个答案:

答案 0 :(得分:4)

您可以使用jQuery的.click()方法。例如

$('a.headline').click();

它将触发事件

答案 1 :(得分:1)

如果将数据保存到数据库中,则只需将值修改为数据库即可。

如果您要测试的是点击事件,则会有模拟网站加载的程序,这些网站可以启动您网站的点击次数。

更好更简单的方法可能就是将您的点击事件发布到javascript循环中:

function launchMyClick(newsObject) {
    for(var x = 0; x < 1000; x++)
        newsObject.click(); //newsObject is the jQuery object representing your link.
}

只需为每条新闻多次调用此功能,您就会看到1000次点击的效果。

答案 2 :(得分:0)

您可以通过将元素绑定到另一个事件来触发元素的“点击”事件,例如“的keydown”。只是一个简短的例子:https://jsfiddle.net/wdop7ydk/1/

HTML

<a id='myLink' href='#'>My link</a>

JS / JQuery的

let myLink = $("#myLink");

myLink.on('click', function() {
  console.log("Clicked");
});

$(document.body).on("keydown", function(e) {
  if ( e.keyCode === 13 ) {
    myLink.trigger("click"); // Or myLink.click(), as prtdomingo suggested.
  };
});

在这里,每按一次Enter键,链接的“点击”事件就会触发。 (如果需要,您可以在此处查找键盘按钮的代码:http://keycode.info。)

答案 3 :(得分:0)

如果您想测试incStoryClicksCount功能,请调用它:

incStoryClicksCount('15280681', '_on_click_handler');

如果由于某种原因,您的incStoryClicksCount使用this参数,则可以使用以下this参数链接到实际<a>节点来调用该函数:< / p>

# adapat the following code to select a relevant 'a' node :
# this specific example will fetch the first 'a' node with class 'headline'
# in the whole page
var a = $('a.headline').get(0);

# call function and specify what value should be used as 'this' :
incStoryClicksCount.call(a, '15280681', '_on_click_handler');

答案 4 :(得分:0)

您可以尝试将其他事件添加到链接中,例如mouseover,因为它可能更容易触发多次,并略微更新了它们的操作以避免打开文章:

// Just mocking the functions in your code:

function _on_click_handler() {
  console.log('_on_click_handler() called.');
}

function incStoryClicksCount(id, handlerKey) {  
  console.log(`\nincStoryClicksCount(${ id }, ${ handlerKey }) called.`); 
  
  const handler = window[handlerKey];
  
  if (handler) handler();
}

function wopen(href) {
  console.log(`wopen(${ href }) called.`); 
  
  return false;  
}

// Let's create a function to replace wopen that won't open
// a link:

function noop() {
  console.log(`noop() called.`);
  
  return false;
}

// Let's grab all links and attach a mouseover event to them
// with  similar code to their original `onclick`:

Array.from(document.querySelectorAll('.link')).map((link) => {
  link.setAttribute('onmouseover',
    link.getAttribute('onclick').replace(/wopen\(/g, 'noop(')
  );
});
<a class="link" href="https://keyjs.dev/123" onclick="incStoryClicksCount('123', '_on_click_handler'); return wopen('https://keyjs.dev/123');">123</a>

<a class="link" href="https://keyjs.dev/456" onclick="incStoryClicksCount('456', '_on_click_handler'); return wopen('https://keyjs.dev/456');">456</a>

<a class="link" href="https://keyjs.dev/789" onclick="incStoryClicksCount('789', '_on_click_handler'); return wopen('https://keyjs.dev/789');">789</a>

相关问题