我正在尝试制作一本 JavaScript 小册子,网址基本保持不变,只是日期发生了变化
我通过调整旧书签来实现此目的:
javascript:function url(){
var date = new Date();
var m = date.getMonth()+1;
var d = date.getDate();
var y = date.getYear();
var h = date.getHours();
var hs = date.getHours()-1;
if(m < 10){m = '0' + m;}
if(d < 10){d = '0' + d;}
return 'XXXXXX'+ y +'-' + m + '-' + d + 'XXXXX' + y + '-' + m + '-' d + 'xxxxxx'; } window.open(url(),"_parent");
我需要输出示例:website.com/2024-02-04/info/2024-02-10/stuff 其中唯一需要更新的是日期以及它们是否可以自动加载本周的第一天(星期日)和本周的最后一天(星期六)
javascipt和小册子对我来说是新的,所以请原谅我的知识差距
下面的代码以未缩小的版本呈现。为了能够在书签中使用它,您必须缩小它。
function getNewDate(dayName) {
var date = new Date();
var day = date.getDay();
// case for when we want Sunday
if(dayName.toLowerCase() === 'sunday') {
// reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getDay
// day === 0 means it's Sunday
var diff = date.getDate() - day + (day === 0 ? -7 : 0);
// case when it's not Sunday. We're assuming it's always Saturday, otherwise. Not good, generally, but alright in this case
} else {
var diff = date.getDate() + (6 - day) + (day >= 6 ? 7 : 0);
}
var newDate= new Date(date.setDate(diff));
var m = newDate.getMonth() + 1;
var d = newDate.getDate();
var y = newDate.getFullYear();
if(m < 10) {
m = '0' + m;
}
if(d < 10) {
d = '0' + d;
}
return y + '-' + m + '-' + d;
}
function url() {
var date_1 = getNewDate('sunday');
var date_2 = getNewDate('saturday');
return 'website.com/' + date_1 + '/info/' + date_2 + '/stuff';
}
// When using it as a bookmarklet, comment out the line below...
alert(url());
// ... and remove the comment from the one below
// window.open(url(),"_parent");
缩小时(并使用
window.open
而不是 alert
):
function getNewDate(e){var t=new Date,a=t.getDay();if("sunday"===e.toLowerCase())var r=t.getDate()-a+(0===a?-7:0);else var r=t.getDate()+(6-a)+(a>=6?7:0);var n,u=new Date(t.setDate(r)),g=u.getMonth()+1,s=u.getDate();return g<10&&(g="0"+g),s<10&&(s="0"+s),u.getFullYear()+"-"+g+"-"+s}function url(){var e=getNewDate("sunday"),t=getNewDate("saturday");return"website.com/"+e+"/info/"+t+"/stuff"} window.open(url(),"_parent");
现在,为了能够将其用作书签,您必须做一些事情。
您可能必须在缩小的JS上使用
encodeURI
,才能在某些浏览器中运行。 Chrome 和 Firefox 可以与缩小的书签一起正常工作。
尝试在 Chrome 的新选项卡中使用小书签将不起作用(在 Firefox 中它可以工作)。我一直无法找到确切的原因 - 在this SO answer中有一个SO评论(由blackcatweb),其中提到Javascript引擎在新选项卡中不可用。
您需要在 URL 前添加正确的协议前缀 -
http
或 https
。