黑帽联盟

 找回密码
 会员注册
查看: 1895|回复: 4
打印 上一主题 下一主题

[经验] JS代码实现浏览器网页标题的动态切换,略微提高网站粘性

[复制链接]

148

主题

9

听众

337

积分

版主

Rank: 7Rank: 7Rank: 7

  • TA的每日心情
    擦汗
    2018-6-6 11:33
  • 签到天数: 348 天

    [LV.8]以坛为家I

    前几天在微饭天空看到一个让我眼前一亮的分享,自己拿过来用了几天之后,感觉挺有意思,现在我略微改进一下并分享出来,方便更多人自定义成自己喜欢的内容。

    一、原版分享
    功能描述:当网页标签失去焦点切换到指定的标题,获得焦点时即恢复正常标题
    功能预览:
    js_title1.gif

    原版代码(可用代码①):
    游客,如果您要查看本帖隐藏内容请回复


    部署方法:

    将以下代码加入主题下的footer.php或者header.php文件中即可(Ps:添加到Jquery.js之后,否则无效)。
    更多表情:
    1. (=・ω・=)
    2. _(:3」∠)_
    3. (。・ω・。)
    4. (°∀°)ノ
    5. (′;ω;)
    6. (′・_・)
    复制代码
    二、改进分享
    说是改进,其实也就是加入了我的一些理解,所谓萝卜白菜各有所爱,喜欢哪个就用哪个吧!我加入这个功能后,发现同时打开多个博客网页会带来影响用户体验的尴尬:未激活的标签标题全部显示“(●—●) 你好,小伙伴!”这种相同的标题,不点击看看还真不知道是哪个页面。

    那就稍微小改动一下,增加一个获取原始标题的变量 title,并组合起来一起展示,至少把鼠标放上去能够知道该页面到底是哪篇文章,效果如下:
    js_title2.gif

    当然,只修改微饭分享的代码中的文字描述,很可能会报错或展示成undefined啥啥啥。
    我先将原版代码解密一下:
    游客,如果您要查看本帖隐藏内容请回复


    这样就直观多了,然后在自定义内容后拼接原始标题(变量a、b 或 d)即可(可用代码②):
    1. jQuery(document).ready(function() {
    2.     function c() {
    3.         document.title = document[a] ? "o(∩_∩)o 温故而知新,回头再看看吧!→《" + d + "》" : d
    4.     }
    5.     var a, b, d = document.title;
    6.     "undefined" != typeof document.hidden ? (a = "hidden", b = "visibilitychange") : "undefined" != typeof document.mozHidden ? (a = "mozHidden", b = "mozvisibilitychange") : "undefined" != typeof document.webkitHidden && (a = "webkitHidden", b = "webkitvisibilitychange");
    7.     "undefined" == typeof document.addEventListener && "undefined" == typeof document[a] || document.addEventListener(b, c, !1)
    8. });
    复制代码
    你可以将代码中的提示文字改成你喜欢的,并在浏览器开发者模式【F12 】下的控制台(console)中粘贴并回车,然后切换网页标题就能实时看到效果了:
    js_title3.gif

    为了进一步提高用户体验,我们还可以排除首页,在多个窗口都出现自定义标题的时候,至少还可以快速定位到首页,所以我将代码继续小改如下(可用代码③):
    1. jQuery(document).ready(function() {
    2.     function c() {
    3.         /* 排除首页(记得自行修改下首页地址) */
    4.         if (location.href != "https://bbs.cnblackhat.com/") { document.title = document[a] ? "o(∩_∩)o 温故而知新,回头再看看吧!→《" + d + "》" : d }
    5.     }
    6.     var a, b, d = document.title;
    7.     "undefined" != typeof document.hidden ? (a = "hidden", b = "visibilitychange") : "undefined" != typeof document.mozHidden ? (a = "mozHidden", b = "mozvisibilitychange") : "undefined" != typeof document.webkitHidden && (a = "webkitHidden", b = "webkitvisibilitychange");
    8.     "undefined" == typeof document.addEventListener && "undefined" == typeof document[a] || document.addEventListener(b, c, !1)
    9. });
    复制代码
    部署后,若发现提示 undefined,很可能是编码问题,可以将代码先编码一下:
    1. jQuery(document).ready(function() {
    2.     function c() {
    3.     if (location.href != "https://bbs.cnblackhat.com/") { document.title = document[a] ? "o(\u2229_\u2229)o \u6e29\u6545\u800c\u77e5\u65b0,\u56de\u5934\u518d\u770b\u770b\u5427!\u2192\u300a" : d }
    4.     }
    5.     var a, b, d = document.title;
    6.     "undefined" != typeof document.hidden ? (a = "hidden", b = "visibilitychange") : "undefined" != typeof document.mozHidden ? (a = "mozHidden", b = "mozvisibilitychange") : "undefined" != typeof document.webkitHidden && (a = "webkitHidden", b = "webkitvisibilitychange");
    7.     "undefined" == typeof document.addEventListener && "undefined" == typeof document[a] || document.addEventListener(b, c, !1)
    8. });
    复制代码
    当然也可以混淆加密一下保持神秘性。比如,先混淆再加密的代码如下:
    1. eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('w(0).x(5(){5 d(){"y://k.n/"!=s.v&&(0.6=0[a]?"o(\\A\\C)o \\E\\g\\h\\i\\j,\\f\\l\\m\\4\\4\\p!\\q\\r"+c+"\\t":c)}u a,b,c=0.6;"2"!=3 0.8?(a="8",b="z"):"2"!=3 0.9?(a="9",b="B"):"2"!=3 0.e&&(a="e",b="D");"2"==3 0.7&&"2"==3 0[a]||0.7(b,d,!1)});',41,41,'document||undefined|typeof|u770b|function|title|addEventListener|hidden|mozHidden|||||webkitHidden|u56de|u6545|u800c|u77e5|u65b0|zhangge|u5934|u518d|net||u5427|u2192|u300a|location|u300b|var|href|jQuery|ready|http|visibilitychange|u2229_|mozvisibilitychange|u2229|webkitvisibilitychange|u6e29'.split('|'),0,{}))
    复制代码
    三、惯例小结
    喜欢动脑筋的朋友有没有看出这个功能的优点呢?当用户在博客在新标签点开另一篇文章时,之前打开的文章标题就会自动变成【o(∩_∩)o 温故而知新,回头再看看吧!→《之前的文章标题》】,在挑起用户好奇的同时,略微提高文章的回头率。

    当然,弊端也是固然存在的,当一次性打开多个网页时,不但标签页会自动变窄导致看不全,而且看起来全部都一个样,导致用户想回头找一下刚刚看过的文章都必须用鼠标聚焦或点击查看。

    好了,分享就到这里结束了,个中利弊就只能自己取舍了!喜欢折腾的朋友赶紧试试吧!
    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    4

    主题

    0

    听众

    74

    积分

    黑帽新手

    Rank: 2

  • TA的每日心情
    擦汗
    2019-3-14 21:19
  • 签到天数: 67 天

    [LV.6]常住居民II

    不错!这样弄  会被K站吗?

    点评

    heimao  不会的  详情 回复 发表于 2017-5-8 23:40
    回复

    使用道具 举报

    148

    主题

    9

    听众

    337

    积分

    版主

    Rank: 7Rank: 7Rank: 7

  • TA的每日心情
    擦汗
    2018-6-6 11:33
  • 签到天数: 348 天

    [LV.8]以坛为家I

    wxztkj 发表于 2017-5-8 10:29
    不错!这样弄  会被K站吗?

    不会的
    回复

    使用道具 举报

    52

    主题

    2

    听众

    310

    积分

    黑帽学员

    Rank: 3Rank: 3

  • TA的每日心情
    奋斗
    2019-9-27 16:27
  • 签到天数: 258 天

    [LV.8]以坛为家I

    不错,挺实用的
    回复

    使用道具 举报

    0

    主题

    0

    听众

    5

    积分

    黑帽菜鸟

    Rank: 1

  • TA的每日心情
    开心
    2018-5-25 09:19
  • 签到天数: 2 天

    [LV.1]初来乍到

    学习 学习了  非常的实用
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部