// ==UserScript== // @name Bing Daily Picture Download button|必应每日图片下载按钮 // @namespace https://greasyfork.org/en/users/131965-levinit // @author levinit // @description Add a button for downloading bing-daily-pictures.添加一个必应每日图片下载按钮。 // @include *://cn.bing.com/ // @include *://www.bing.com/ // @include *://www.bing.com/?* // @include *://cn.bing.com/?* // @run-at document-start // @version 0.1.4.1 // @grant none // @downloadURL none // ==/UserScript== //定时器周期行检测今日必应图片是否加载成功 let timer = setInterval(function() { //获取到今日必应图片信息后添加按钮 停止周期检测 if (getImg()) { const imgInfo = getImg() addBtn(imgInfo) const downloadBtn = document.querySelector('#download-btn') //下载按钮 //用户前后切换了必应图片 图片地址和名称应该对应改变 当用户移动鼠标到图片上时进行检测 downloadBtn.onmouseover = function() { const newInfo = getImg() //获取图片地址 if (this.href != newInfo.picUrl) { //如果新获取的地址与下载按钮的地址不同 就更改为新地址和名字 this.href = newInfo.picUrl this.download = newInfo.picName } } clearInterval(timer) } }, 233) //获取图片地址 function getImg() { // 从行内css属性background-image中获取今日必应图片的url() let picUrl = document.querySelector('#bgDiv').style.backgroundImage //如果css属性background-image写在外部css或者style标签中 if (picUrl === '') { let style0 = document.styleSheets[0] let styles = style0.cssRules.length for (let i = 0; i < styles; i++) { if (style0.cssRules[i].selectorText === '#bgDiv') { picUrl = style0.cssRules[i].style.backgroundImage } } } //图片地址 picUrl = picUrl.substring(5, picUrl.length - 2) //图片名称 let picName = picUrl.substring(picUrl.lastIndexOf('/') + 1, picUrl.length) return { picUrl, picName } } //添加下载按钮 function addBtn(imgInfo) { //在必应首页添加下载按钮 let btn = document.createElement('a') let text = null if (navigator.language.indexOf('zh') >= 0) { text = document.createTextNode('下载今日必应图片') } else { text = document.createTextNode('Download Today Bing Pictures') } btn.id = 'download-btn' btn.style.cssText = 'display:inline-block;padding:0.25em;border-radius:0.25em;position:fixed;z-index:1000;right:20%;top:12%;background-color:#c3d1cf94;font-size: 1.5em;' btn.download = imgInfo.picName btn.href = imgInfo.picUrl btn.appendChild(text) document.body.appendChild(btn) }