-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path中国大学MOOC-补足页面标题.user.js
75 lines (67 loc) · 1.93 KB
/
中国大学MOOC-补足页面标题.user.js
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
// ==UserScript==
// @name 中国大学MOOC-补足页面标题
// @namespace http://tampermonkey.net/
// @version 0.4.0
// @description 补充每个课程内作业、考试等页面的信息
// @license GPL-3.0-or-later
// @supportURL https://github.com/YDX-2147483647/BIT-enhanced/issues
// @author Y.D.X.
// @require https://gitee.com/YDX-2147483647/BIT-enhanced/raw/main/TamperMonkey/lib/mooc.js
// @match https://www.icourse163.org/learn/*
// @match https://www.icourse163.org/spoc/learn/*
// @grant none
// ==/UserScript==
(function () {
'use strict'
/* global Mooc */
/**
* 标题的 CSS 选择器
* @type {string}
* @description 优先使用在前面的。
*/
const title_selectors = [
'h2.j-moduleName',
'.j-forumName > h2',
'h2.j-hwname',
'h2.j-title',
'h3.j-title',
'h2.j-panelName',
'.u-learn-moduletitle .j-lesson .up',
'.j-forumName a ~ span:last-child'
]
/**
* 获取课程名称
* @returns {string}
*/
function get_course_name () {
return document.querySelector('h4.courseTxt').textContent
}
/**
* 组合出页面标题
* @param {...string} titles
* @returns {string}
*/
function combine_title (...titles) {
return titles.join(' - ') + '|中国大学MOOC'
}
/**
*
* @returns {string | null}
*/
function get_subtitle () {
for (const selector of title_selectors) {
const title = document.querySelector(selector)
if (title) {
return title.textContent
}
}
return null
}
function update_page_title () {
// console.log(`%cupdate_page_title: ${document.title}`, "color: green;");
const titles = [get_subtitle(), get_course_name()].filter(t => Boolean(t))
document.title = combine_title(...titles)
}
Mooc.on_every_loaded(update_page_title)
window.addEventListener('hashchange', () => Mooc.on_every_loaded(update_page_title))
})()