我有一个弹出窗口,当页面加载时自动加载,它在关闭按钮上有一个计时器,它的时间根据用户查看弹出窗口的次数而变化。它还有一个打印按钮,如果你按下键,可以回拨弹出窗口。
我的重点是打印'按钮。目前,当我点击'打印'按钮它将counter
变量设置为0
,counter
变量控制计时器的值。但是,如果您要重新加载页面,则计时器不会是0
,它可以是5
,15
,30
,45
或{{1 }秒取决于您之前查看过该页面的次数。我希望计时器在'打印后永久保持60
。按钮已被点击。我知道这可以通过0
或cookie实现,但我不确定如何。
请注意,计时器似乎无法在代码段或fiddle中使用,因为我认为有些功能无法正常工作,例如localStorage
。但是,当我创建HTML文件时,它将在我的浏览器中工作。我的代码如下:
document.write

$(document).ready(function() {
$(document).keypress(function(e) {
if (e.charCode === 65 || 103) {
$('#PopUp').css("visibility", "visible");
$('#PopUp').css("opacity", 1);
}
});
$(function() {
$('#PopUp').css("visibility", "visible");
$('#PopUp').css("opacity", 1);
});
$(".close").click(function() {
$('#PopUp').css("visibility", "hidden");
$('#PopUp').css("opacity", 0);
});
});
// initialization
var counter = 60;
var timesVisited = 0;
var cookieExpirationDays = 7; // don't expire cookies for a week
// test to see if localstorage/sessionStorage is available (localStorage has no expiration date)
if (typeof(Storage) !== "undefined") {
counter = 60;
timesVisited = localStorage.getItem("timesVisited");
// first time
if ((timesVisited == 0) || (timesVisited < 1)) {
timesVisited = 1;
localStorage.setItem("timesVisited", timesVisited);
counter = 60;
}
// second time
else if ((timesVisited >= 1) && (timesVisited <= 3)) {
timesVisited++;
localStorage.setItem("timesVisited", timesVisited);
counter = 45;
}
// third time
else if ((timesVisited >= 4) && (timesVisited <= 8)) {
timesVisited++;
localStorage.setItem("timesVisited", timesVisited);
counter = 30;
}
// fourth time
else if ((timesVisited >= 9) && (timesVisited <= 13)) {
timesVisited++;
localStorage.setItem("timesVisited", timesVisited);
counter = 15;
}
// fifth time
else if (timesVisited >= 14) {
timesVisited++;
localStorage.setItem("timesVisited", timesVisited);
counter = 5;
}
}
// No localstorage/sessionStorage. Use cookies
else {
timesVisited = getCookie("timesVisited");
console.log(timesVisited);
// first time
if ((timesVisited == "") || (timesVisited < 1)) {
timesVisited = 1;
setCookie("timesVisited", timesVisited, cookieExpirationDays);
counter = 60;
}
// second time
else if ((timesVisited >= 1) && (timesVisited <= 3)) {
timesVisited++;
setCookie("timesVisited", timesVisited, cookieExpirationDays);
counter = 45;
}
// third time
else if ((timesVisited >= 4) && (timesVisited <= 8)) {
timesVisited++;
setCookie("timesVisited", timesVisited, cookieExpirationDays);
counter = 30;
}
// fourth time
else if ((timesVisited >= 9) && (timesVisited <= 13)) {
timesVisited++;
setCookie("timesVisited", timesVisited, cookieExpirationDays);
counter = 15;
}
// fifth time
else if (timesVisited >= 14) {
timesVisited++;
setCookie("timesVisited", timesVisited, cookieExpirationDays);
counter = 5;
}
}
var setMsg = setInterval(function() {
counter--;
if (counter >= 60 && counter >= 70) {
$("#close-message").html("1:" + (counter - 60));
} else if (counter >= 60 && counter < 70) {
$("#close-message").html("1:0" + (counter - 60));
} else if (counter >= 10) {
$("#close-message").html("0:" + counter);
} else if (counter > 0) {
$("#close-message").html("0:0" + counter);
} else {
$(".close").click(function() {
$('#PopUp').css("visibility", "hidden");
$('#PopUp').css("opacity", 0);
});
$("#timer").remove();
clearInterval(setMsg);
}
}, 1000);
});
function printDiv()
{
var content = document.getElementById('content').innerHTML;
var win = window.open();
win.document.write(content);
win.print(); // JavaScript Print Function
win.close(); //It will close window after Print.
$( ".close" ).click(function() {
$('#PopUp').css("visibility", "hidden");
$('#PopUp').css("opacity", 0);
});
$("#timer").remove();
clearInterval(setMsg);s
}
&#13;
.t {
-webkit-transform-origin: top left;
-moz-transform-origin: top left;
-o-transform-origin: top left;
-ms-transform-origin: top left;
-webkit-transform: scale(0.25);
-moz-transform: scale(0.25);
-o-transform: scale(0.25);
-ms-transform: scale(0.25);
z-index: 2;
position: absolute;
white-space: pre;
overflow: visible;
}
#t1_1 {
left: 256px;
top: 35px;
letter-spacing: 0.1px;
}
#t2_1 {
left: 334px;
top: 87px;
word-spacing: -0.1px;
}
#t3_1 {
left: 210px;
top: 123px;
}
#t4_1 {
left: 238px;
top: 123px;
word-spacing: -0.3px;
}
#t5_1 {
left: 210px;
top: 141px;
}
#t6_1 {
left: 210px;
top: 160px;
}
#t7_1 {
left: 210px;
top: 179px;
}
#t8_1 {
left: 238px;
top: 141px;
letter-spacing: -0.1px;
word-spacing: -0.1px;
}
#t9_1 {
left: 238px;
top: 160px;
word-spacing: -0.1px;
}
#ta_1 {
left: 238px;
top: 179px;
word-spacing: -0.1px;
}
#tb_1 {
left: 343px;
top: 242px;
letter-spacing: -0.1px;
}
#tc_1 {
left: 210px;
top: 278px;
}
#td_1 {
left: 210px;
top: 297px;
}
#te_1 {
left: 210px;
top: 315px;
}
#tf_1 {
left: 210px;
top: 334px;
}
#tg_1 {
left: 238px;
top: 278px;
word-spacing: -0.1px;
}
#th_1 {
left: 238px;
top: 297px;
word-spacing: -0.1px;
}
#ti_1 {
left: 238px;
top: 315px;
word-spacing: -0.2px;
}
#tj_1 {
left: 238px;
top: 334px;
word-spacing: -0.1px;
}
#tk_1 {
left: 286px;
top: 393px;
word-spacing: -0.1px;
}
#tl_1 {
left: 210px;
top: 429px;
}
#tm_1 {
left: 210px;
top: 448px;
}
#tn_1 {
left: 210px;
top: 466px;
}
#to_1 {
left: 210px;
top: 485px;
}
#tp_1 {
left: 238px;
top: 429px;
word-spacing: -0.3px;
}
#tq_1 {
left: 238px;
top: 448px;
word-spacing: -0.1px;
}
#tr_1 {
left: 238px;
top: 466px;
word-spacing: -0.1px;
}
#ts_1 {
left: 238px;
top: 485px;
word-spacing: -0.2px;
}
#tt_1 {
left: 326px;
top: 544px;
letter-spacing: -0.1px;
}
#tu_1 {
left: 210px;
top: 580px;
}
#tv_1 {
left: 210px;
top: 599px;
}
#tw_1 {
left: 210px;
top: 618px;
}
#tx_1 {
left: 238px;
top: 618px;
}
#ty_1 {
left: 210px;
top: 636px;
}
#tz_1 {
left: 238px;
top: 636px;
}
#t10_1 {
left: 210px;
top: 655px;
}
#t11_1 {
left: 238px;
top: 580px;
word-spacing: -0.1px;
}
#t12_1 {
left: 238px;
top: 599px;
word-spacing: -0.2px;
}
#t13_1 {
left: 238px;
top: 655px;
word-spacing: -0.1px;
}
#t14_1 {
left: 264px;
top: 716px;
word-spacing: -0.2px;
}
#t15_1 {
left: 210px;
top: 752px;
}
#t16_1 {
left: 210px;
top: 771px;
}
#t17_1 {
left: 210px;
top: 789px;
}
#t18_1 {
left: 210px;
top: 808px;
}
#t19_1 {
left: 238px;
top: 752px;
word-spacing: -0.1px;
}
#t1a_1 {
left: 238px;
top: 771px;
word-spacing: -0.1px;
}
#t1b_1 {
left: 238px;
top: 789px;
word-spacing: -0.2px;
}
#t1c_1 {
left: 238px;
top: 808px;
word-spacing: -0.1px;
}
.s1_1 {
FONT-SIZE: 85.4px;
FONT-FAMILY: Arial;
color: rgb(0, 0, 0);
FONT-WEIGHT: bold;
}
.s2_1 {
FONT-SIZE: 61.2px;
FONT-FAMILY: Arial;
color: rgb(0, 0, 0);
FONT-WEIGHT: bold;
}
.s3_1 {
FONT-SIZE: 61.2px;
FONT-FAMILY: SymbolMT_1z5;
color: rgb(0, 0, 0);
}
.s4_1 {
FONT-SIZE: 61.2px;
FONT-FAMILY: Arial;
color: rgb(0, 0, 0);
}
div {
padding-top: 10px;
}
.button {
font-size: 1em;
padding: 10px;
color: #fff;
border: 2px solid orange;
border-radius: 20px/50px;
text-decoration: none;
cursor: pointer;
transition: all 0.3s ease-out;
}
.button:hover {
background: orange;
}
.overlay {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: rgba(0, 0, 0, 0.7);
transition: opacity 500ms;
visibility: visible;
opacity: 1;
height: 578%;
width: 117.5%;
}
.overlay:target {
visibility: hidden;
opacity: 0;
display: none;
}
.PopUp {
margin: 50px auto;
padding: 0px;
background: #fff;
border-radius: 5px;
width: 60%;
position: relative;
transition: all 5s ease-in-out;
}
.PopUp .close {
position: absolute;
top: 20px;
right: 30px;
transition: all 200ms;
font-size: 30px;
font-weight: bold;
text-decoration: none;
color: #333;
}
.PopUp .close:hover {
color: orange;
}
.PopUp .content {
max-height: 117.5%;
overflow: auto;
}
.pdf1 {
width: 935px;
height: 1210px;
background-color: white;
-moz-transform: scale(1);
z-index: 0;
border: none;
}
button {
background-color: Transparent;
background-repeat: no-repeat;
border: none;
cursor: pointer;
overflow: hidden;
outline: none;
font-family: "Open Sans", sans-serif;
font-weight: 700;
color: #2D2D2D;
font-size: 1rem;
line-height: 1;
text-align: center;
}
.Print {
padding-bottom: 10px;
margin-top: -5px;
}
.close-message {
font-family: "Open Sans", sans-serif;
font-weight: 700;
color: black;
font-size: 0.9rem;
line-height: 1;
position: absolute;
top: 15px;
left: 9px;
}
.timer {
position: absolute;
top: 5px;
right: 20px;
z-index: 2;
}
&#13;
答案 0 :(得分:2)
已修改:请在您的HTML文件中进行测试... 出于安全原因,cookie无法与小提琴一起运行。
Cookie无法保存号码 0 ,因此我将其设置为 -1
您只需要在setInterval()
上更新cookie
var cookieExpirationDays = 7;
function setCookie(cname, cvalue, exdays){
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function timeEnded(){
// $(".close").click();
// $("#timer").remove();
$("#Print").remove();
}
$(document).ready(function() {
$(document).keypress(function(e) {
if (e.charCode === 65 || 103) {
$('#PopUp').css("visibility", "visible");
$('#PopUp').css("opacity", 1);
}
});
$('#PopUp').css("visibility", "visible");
$('#PopUp').css("opacity", 1);
$(".close").click(function() {
$('#PopUp').css("visibility", "hidden");
$('#PopUp').css("opacity", 0);
});
var printedCount = parseInt(getCookie("printedCookie"));
if(printedCount){
if(printedCount == ""){
var printedCount = 0;
}
}else{
var printedCount = 0;
}
var counter = parseInt(getCookie("lastCounter"));
if(counter){
if(counter == ""){
var counter = 60;
setCookie("lastCounter", counter, cookieExpirationDays);
}
}else{
var counter = 60;
}
var setMsg = setInterval(function() {
counter--;
setCookie("lastCounter", counter, cookieExpirationDays);
if (counter >= 60 && counter >= 70) {
$("#close-message").html("1:" + (counter - 60));
}else if(counter >= 60 && counter < 70) {
$("#close-message").html("1:0" + (counter - 60));
}else if(counter >= 10) {
$("#close-message").html("0:" + counter);
}else if(counter > 0) {
$("#close-message").html("0:0" + counter);
}else if(counter <= 0) {
setCookie("lastCounter", "-1", cookieExpirationDays);
$("#printed-message1").html("Print Button Removed");
clearInterval(setMsg);
timeEnded();
$("#close-message").html("0:00");
}
}, 1000);
$("#Print button").click(function(){
printedCount = getCookie("printedCookie");
printedCount++;
if(printedCount != ""){
setCookie("printedCookie", printedCount, cookieExpirationDays);
}else{
setCookie("printedCookie", "1", cookieExpirationDays);
}
setCookie("lastCounter", "-1", cookieExpirationDays);
var content = document.getElementById('content').innerHTML;
var win = window.open();
win.document.write(content);
win.print();
win.close();
clearInterval(setMsg);
timeEnded();
$("#close-message").html("0:00");
});
$("#resetCounter").click(function(){
setCookie("lastCounter", "0", cookieExpirationDays);
});
$("#printed-message").html("Printed Times : " + printedCount);
});
&#13;
.t {
-webkit-transform-origin: top left;
-moz-transform-origin: top left;
-o-transform-origin: top left;
-ms-transform-origin: top left;
-webkit-transform: scale(0.25);
-moz-transform: scale(0.25);
-o-transform: scale(0.25);
-ms-transform: scale(0.25);
z-index: 2;
position: absolute;
white-space: pre;
overflow: visible;
}
#t1_1 {
left: 256px;
top: 35px;
letter-spacing: 0.1px;
}
#t2_1 {
left: 334px;
top: 87px;
word-spacing: -0.1px;
}
#t3_1 {
left: 210px;
top: 123px;
}
#t4_1 {
left: 238px;
top: 123px;
word-spacing: -0.3px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="PopUp" class="overlay">
<div class="PopUp">
<div class="timer" id="timer"><img src="http://i.imgur.com/87XaOWA.png">
<p class="close-message" id="close-message"></p>
<a href="" id="resetCounter">Click me to reset the counter</a>
<p class="close-message" id="printed-message">Printed Times : </p>
<p class="close-message" id="printed-message1"></p>
</div>
<a class="close" href="#">✕</a>
<!-- There is no id="content" -->
<!-- There is no id="content" -->
<!-- There is no id="content" -->
<!-- There is no id="content" -->
<!-- There is no id="content" -->
<div class="content" id="content">
<div id="p1" class="p1" style="overflow: hidden; position: relative; width: 885px; height: 878px;">
<div id="pg1Overlay" style="width:100%; height:100%; position:absolute; z-index:1; background-color:rgba(0,0,0,0); -webkit-user-select: none;"></div>
<div id="pg1" class="pg1" style="-webkit-user-select: none;">
<img src="http://i.imgur.com/vcY42CW.png" id="pdf1" class="pdf1">
</div>
<div id="t1_1" class="t s1_1">Player Selection Criteria Evaluator Cue Card</div>
<div id="t2_1" class="t s2_1">Skating – speed, quickness, technique</div>
<div id="t3_1" class="t s3_1">?</div>
<div id="t4_1" class="t s4_1">Forward and Backward</div>
<div id="t5_1" class="t s3_1">?</div>
<div id="t6_1" class="t s3_1">?</div>
<div id="t7_1" class="t s3_1">?</div>
<div id="t8_1" class="t s4_1">Turn both directions</div>
<div id="t9_1" class="t s4_1">Stop both directions</div>
<div id="ta_1" class="t s4_1">Are they in a good position for stability and strength</div>
<div id="tb_1" class="t s2_1">Passing – technique, control, vision</div>
<div id="tc_1" class="t s3_1">?</div>
<div id="td_1" class="t s3_1">?</div>
<div id="te_1" class="t s3_1">?</div>
<div id="tf_1" class="t s3_1">?</div>
<div id="tg_1" class="t s4_1">Forehand and Backhand</div>
<div id="th_1" class="t s4_1">To moving and stationary target</div>
<div id="ti_1" class="t s4_1">Vision – do they take a look and select best option</div>
<div id="tj_1" class="t s4_1">Advanced – board passes, chips, saucer passes</div>
<div id="tk_1" class="t s2_1">Puck Control – technique, open ice, confined space</div>
<div id="tl_1" class="t s3_1">?</div>
<div id="tm_1" class="t s3_1">?</div>
<div id="tn_1" class="t s3_1">?</div>
<div id="to_1" class="t s3_1">?</div>
<div id="tp_1" class="t s4_1">Open carry with speed</div>
<div id="tq_1" class="t s4_1">Execute dekes and fakes on the 1 on 1</div>
<div id="tr_1" class="t s4_1">Can they handle the puck in traffic and tight space</div>
<div id="ts_1" class="t s4_1">Ability to maintain control while being stick checked</div>
<div id="tt_1" class="t s2_1">Shooting – technique, accuracy, velocity</div>
<div id="tu_1" class="t s3_1">?</div>
<div id="tv_1" class="t s3_1">?</div>
<div id="tw_1" class="t s3_1">?</div>
<div id="tx_1" class="t s4_1">Velocity</div>
<div id="ty_1" class="t s3_1">?</div>
<div id="tz_1" class="t s4_1">Accuracy</div>
<div id="t10_1" class="t s3_1">?</div>
<div id="t11_1" class="t s4_1">Forehand and backhand</div>
<div id="t12_1" class="t s4_1">Wrist shot, snap shot, slap shot</div>
<div id="t13_1" class="t s4_1">Shot Selection – do they select the best shot for the opportunity?</div>
<div id="t14_1" class="t s2_1">Game Understanding – Principles of Offence and Defence</div>
<div id="t15_1" class="t s3_1">?</div>
<div id="t16_1" class="t s3_1">?</div>
<div id="t17_1" class="t s3_1">?</div>
<div id="t18_1" class="t s3_1">?</div>
<div id="t19_1" class="t s4_1">Player understands positional play</div>
<div id="t1a_1" class="t s4_1">Player supports the puck on the defensive and offensive side of puck</div>
<div id="t1b_1" class="t s4_1">Player communicates with teammates</div>
<div id="t1c_1" class="t s4_1">Player has the ability to read and react.</div>
</div>
</div>
<div id="Print" class="Print" align="center">
<button><img src="http://i.imgur.com/HcXNoMC.png" /></button>
</div>
</div>
</div>
&#13;