恰逢期末,于是随手捣鼓了一个用于快速导出章节内或额外布置作业的js脚本,方便复(zuo)习(bi)。
功能:快速导出作业为pdf,同时避免缩放导致的样式变形。
效果如图:
代码:
// ==UserScript==
// @name 自动打开作业
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author DaXue
// @match https://*.chaoxing.com/mycourse/*
// @match https://*.chaoxing.com/work/*
// @match https://*.chaoxing.com/mooc2/work/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=chaoxing.com
// @grant none
// ==/UserScript==
/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */
var addCss=['<link rel=\"stylesheet\" type=\"text/css\" href=\"https://mooc1.chaoxing.com/space/new/moocIndex/css/nav.css\"><link rel="stylesheet" type="text/css" href="https://mooc1.chaoxing.com/space/new/moocIndex/css/ZuoYe.css">','<link rel="stylesheet" type="text/css" href="https://mooc1.chaoxing.com/mooc2/css/viewStudent.css?v=2022-0905-1000"><link rel="stylesheet" type="text/css" href="https://mooc1.chaoxing.com/mooc2/css/common.css?v=2022-1021-1500">'];
var className=['ZyBottom','padTop60'];
function printDocument(obj,a){
var url='_blank'
var newWindow=window.open("打印窗口",url);
var docStr =obj.innerHTML+addCss[a];
// //传入题目,并引用样式表
newWindow.document.write(docStr);//写入页面内容
newWindow.document.close();
setTimeout(() => { //等待0.5s进行页面渲染,然后调用打印服务
newWindow.print();
newWindow.close(); //关闭新窗口
}, 500);
}
function isWorkNewVersion(){//判断用户所处界面为新版还是旧版
var url=window.location.href
if(url.indexOf('work/selectWorkQuestionYiPiYue')>0){
return 0; //旧版作业
}else if (url.indexOf('&mooc2=1&openc')>0){
return 2; //新版章节内作业
}else if (url.indexOf('mooc2/work/view?courseId')>0) {
return 1; //新版作业
} else {
return 2; //旧版章节内作业
}
}
function printWork(){
var a=isWorkNewVersion(); //调用函数,判断当前页面类型
var x =document.getElementsByClassName(className[a]); //获取页面内容
switch (a) {
case 0:
printDocument(x[0],a);
break;
case 1:
printDocument(x[0],a);
break;
case 2:
x=document.getElementById("frame_content").contentWindow.document.getElementsByClassName('ZyBottom') //获取iframe内元素
printDocument(x[0],a);
break;
// case 3:
// printDocument(x[0]);
// break;
default:
break;
}
}
$(document).keydown(function(event){
if(event.keyCode == 80){
printWork();
}
})
食用方法:在章节的作业页面或者老师布置的作业页面摁下p即可使用。兼容新老版本界面(推荐使用新版界面避免意外情况)
文章评论
博客头图很漂亮
@ccbbp 谢谢~