我試圖把一個小復活節彩蛋放在一個網站上,如果用戶點擊一個鏈接x次,它會觸發一個彈出窗口,假設這會是某種JS或JQuery,但我不知道從哪裏開始或者甚至可能。我想我真正想要的東西就像內置於Android'關於手機'頁面的復活節彩蛋,它會在5秒內點擊大約7次後打開新頁面。有什麼辦法在瀏覽器中做到這一點?我可以創建一個鏈接,只有幾次點擊後纔有效
也許是一個OnClick命令,它將計數器加1並在計數器達到指定數量時執行動作,但每10秒將計數器重置爲0? (我不想弄得太容易找到!)
感謝
我試圖把一個小復活節彩蛋放在一個網站上,如果用戶點擊一個鏈接x次,它會觸發一個彈出窗口,假設這會是某種JS或JQuery,但我不知道從哪裏開始或者甚至可能。我想我真正想要的東西就像內置於Android'關於手機'頁面的復活節彩蛋,它會在5秒內點擊大約7次後打開新頁面。有什麼辦法在瀏覽器中做到這一點?我可以創建一個鏈接,只有幾次點擊後纔有效
也許是一個OnClick命令,它將計數器加1並在計數器達到指定數量時執行動作,但每10秒將計數器重置爲0? (我不想弄得太容易找到!)
感謝
試試這個用jQuery:
HTML:
<a id='lnkEgg' data-clicks='0'>Click for surprise</a>
腳本:
$(function(){
$("#lnkEgg").on("click",function(){
var c=$(this).data("click");
if(c==7){
//if it equals to whatever number you are chasing
//open the popup
}else{
$(this).data("clicks",c++);
}
});
});
非常感謝,肯定讓我朝着正確的方向前進,對不起我不能高調,但我需要先獲得更多的代表點;) – bhygate
使用的setTimeout(你明確每個時間)和的preventDefault上的click事件,如果它不符合你的要求。
(function (node) { // IIFE to keep our namespace clean :)
var timer,
count = 0;
function timeup() {
count = 0;
}
function handler(e) {
clearTimeout(timer);
timer = setTimeout(timeup, 5e3); // 5 seconds
++count;
if (count < 7) // number of clicks
e.preventDefault();
}
node.addEventLister('click', handler);
}(document.getElementById('myLink'))); // passing the <a> into the IIFE
此代碼必須後運行目標元素存在
@ TheVillageIdiot的技術是要走的路。在這裏,我將使用相同的技術,只是顯示一些方法:
$(function(){
var egg = $('#lnkEgg');
egg.on('click', function() {
//increment and check if magic clicks has been reached
if(++$(this).data().clicks == 7) {
console.log("You've now clicked the required number of times");
//do some more operations
$(this).data('complete', true);
console.log($(this).data());
};
});
//Reset counter every 10 seconds
setInterval(function() {
egg.data().clicks = 0;
}, 10000);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a id="lnkEgg" data-clicks="0">Click for surprise</a>
那麼做呢?你剛纔描述了一種方法來做到這一點。 – emd