OI无关--关于侧边栏

时间:2021-12-25 14:34:33

自己在比较闲的时候学了一点html和js,大概能写一些比较简单的东西了,于是就动起了侧边栏的念头。

如果能在博客里加一个题目快速跳转也很兹磁啊。

首先要选择题目,oj的名字肯定是不能直接输入,因为还有各种大小写,全拼或缩写的问题(如洛谷就有luogu,lgoj,lg等等的写法,不过大多数都是第一种吧)。所以这个一定是给出来一些选项,直接让你选。而题目ID一定是要自己输入的。判错就算了吧,反正跳错了也跟我没关系。

那么我们在教程里找一找,还真的找到了这个东西,就是html里面一个叫表单的元素,里面有文本框,单选和复选,按钮,当然还有下拉框。语法大概就是这样的:

<!--文本框-->
<input type="text"></input>
<!--下拉列表-->
<select>
<option value=""></option>
</select>
<!--按钮-->
<button type="button" onclick=""><button>

于是我们就可以写出来下面的一些东西了:

<div>
<p>各大OJ快速跳转</p>
<form name="OJ" >
<select name="OnlineJudge" id="OnlineJudge">
<option value="BZOJ">BZOJ</option>
<option value="LUOGU">LUOGU</option>
<option value="POJ">POJ</option>
<option value="HDU">HDU</option>
<option value="UOJ">UOJ</option>
<option value="Codeforces">Codeforces</option>
<option value="UVA">UVA</option>
<option value="SPOJ">SPOJ</option>
<option value="ZOJ">ZOJ</option>
</select>
<input type="text" name="pid" id="pid"></input>
<button type="button" onclick="goto()">跳转</button>
</form>
</div>

这样,就差上js代码了。

然后当然是申请js权限啊,这个一般都是给过的。

然后再参考baidu,得知页面跳转用的是window.open()函数,那么就可以这么写:

<script>
function goto() {
var tempp=document.getElementById("test");
tempp.innerHTML="zhy %%%";
var ojname=document.getElementById("OnlineJudge").value;
var temp=document.getElementById("pid").value;
if(temp=="") {
tempp.innerHTML("请输入题目id");
return ;
}
if(ojname=="BZOJ") window.open("https://www.lydsy.com/JudgeOnline/problem.php?id="+temp);
if(ojname=="LUOGU") window.open("https://www.luogu.org/problemnew/show/P"+temp);
if(ojname=="POJ") window.open("http://poj.org/problem?id="+temp);
if(ojname=="HDU") window.open("http://acm.hdu.edu.cn/showproblem.php?pid="+temp);
if(ojname=="SPOJ") window.open("http://www.luogu.org/problemnew/show/SP"+temp);
if(ojname=="UVA") window.open("http://www.luogu.org/problemnew/show/UVA"+temp);
if(ojname=="Codeforces") window.open("http://www.luogu.org/problemnew/show/CF"+temp);
if(ojname=="ZOJ") window.open("http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode="+temp);
if(ojname=="UOJ") window.open("http://uoj.ac/problem/"+temp);
}
</script>

(那句%%%就当没看见了,只是测试用的)

然而,我们把这段代码加上,并没有什么反应,审查一下元素,就可以发现,这里面的js代码怎么意外失踪了呢?

然后我联系了一下博客园团队,答复是js代码限制不多,但是不能是恶意代码。

恶意代码!

可能window.open()就被ban掉了吧。。

这怎么办啊,估计所有的页面跳转都是恶意代码,这不是就没法实现了吗?

你再想想,恶意代码检查肯定是在你填的东西里面检查,那如果你的代码没在填的东西里面,那不就查不到了吗?

然而还有一个问题,就是你还要找个地方把你的代码放上,那怎么找呢?

我们发现,博客园本身就可以发文件啊,那么我们把文件传上,然后把地址弄过去,然后就好了。。

本蒟蒻还是太菜了啊,这么简单的东西竟然还花了一个星期,如果有js大佬轻喷啊。