鼠标选取文字自动提示版权信息

本站使用 NexT 主题,本文适用于使用SWIG模板的主题

理论上使用EJS模板的主题将文件后缀改为.ejs,并在layout文件中引用应该也可以用,没试验过仅供参考

在本站随意选取一段文字即可看到效果

步骤如下:

首先在Hexo\themes\next\layout_third-party目录下新建selectionCopyright.swig文件

然后在文件里依次添加如下代码:

css:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<style>
#selectionCopyright {
position: absolute;
display: none;
background: rgba(244,67,54,.7);
color: #fff;
border-radius: 6px;
box-shadow: none;
border: none;
font-size: 14px;
}
#selectionCopyright a{
color:#fff;
border-color: #fff;
}
#selectionCopyright::before {
content: "";
width: 0;
height: 0;
border-style: solid;
border-width: 6px 8px 6px 0;
border-color: transparent rgba(244,67,54,.7) transparent transparent;
position: absolute;
left: -8px;
top:50%;
transform:translateY(-50%);
}
</style>

Html:

1
<button id="selectionCopyright" disabled="disabled">本文发表于[<a href="http://asifadeaway.com/">AsiFadeAway.com</a>]分享请注明来源!</button>

javascript:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<script>
window.onload = function() {
function selectText() {
if (document.selection) { //IE浏览器下
return document.selection.createRange().text; //返回选中的文字
} else { //非IE浏览器下
return window.getSelection().toString(); //返回选中的文字
}
}
var content = document.getElementsByTagName("body")[0];
var scTip = document.getElementById('selectionCopyright');

content.onmouseup = function(ev) { //设定一个onmouseup事件
var ev = ev || window.event;
var left = ev.clientX;//获取鼠标相对浏览器可视区域左上角水平距离距离
var top = ev.clientY;//获取鼠标相对浏览器可视区域左上角垂直距离距离
var xScroll = Math.max(document.body.scrollLeft, document.documentElement.scrollLeft);//获取文档水平滚动距离
var yScroll = Math.max(document.body.scrollTop, document.documentElement.scrollTop);//获取文档垂直滚动距离
if (selectText().length > 0) {
setTimeout(function() { //设定一个定时器
scTip.style.display = 'inline-block';
scTip.style.left = left + xScroll + 15 + 'px';//鼠标当前x值
scTip.style.top = top + yScroll - 15 + 'px';//鼠标当前y值
}, 100);
} else {
scTip.style.display = 'none';
}
};

content.onclick = function(ev) {
var ev = ev || window.event;
ev.cancelBubble = true;
};
document.onclick = function() {
scTip.style.display = 'none';
};
};
</script>

接着在\Hexo\themes\next\layout_layout.swig文件最后</body>标签之前添加如下语句:

1
{% include '_third-party/selectionCopyright.swig' %}

最后在Git Bash里执行$ hexo clean & hexo g -d (或 $ hexo s)即可

目前已知BUG:有时需要点击两次才能关掉提示信息,不过不影响使用。

参考资料:
https://segmentfault.com/a/1190000004566001
https://bbs.csdn.net/topics/391004576

------------- 本文已结束 感谢您的阅读 -------------
0%