我使用此javascript将所有链接替换为注册消息:
<script>
function replaceLinks() {
var links = document.querySelectorAll('.restore a:link');
for (var i = 0; i < links.length; i++) {
links[i].innerHTML = 'DOWNLOAD register here.';
links[i].href = 'register.php';
}
}
</script>
问题:
它也取代了所有缩略图(链接到它们的全尺寸图像)。我不能将特定的CSS选择器应用于链接,因为我使用vBulletin并将其应用于帖子内容中的链接和图像。
有谁知道我怎么做......
禁止将此Javascript应用于以.jpg,.gif等结尾的链接 - 因此它只会重写链接,而不是链接到其全尺寸图像的缩略图?
答案 0 :(得分:2)
您可以使用简单的正则表达式检查链接href,并仅在test为false时继续:
function replaceLinks() {
var links = document.querySelectorAll('.restore a:link');
for (var i = 0; i < links.length; i++) {
if (/\.(png|jpe?g)$/.test(links[i].href)) continue;
links[i].innerHTML = 'DOWNLOAD register here.';
links[i].href = 'register.php';
}
}
答案 1 :(得分:2)
将此行var links = document.querySelectorAll('.restore a:link');
更改为:
var links = document.querySelectorAll('.restore a:link:not([href$=".jpg"]):not([href$=".jpeg"]):not([href$=".png"])');
答案 2 :(得分:0)
这太容易避免(只是看到代码或停用javascript),我建议(如果可以的话)安装插件或让它成为你(可能只是一个补丁)。
事实上,我认为您可以在built-in settings中禁用匿名下载权限,而无需安装任何内容。 但如果您想使用JavaScript,至少添加一些样式(然后停用JavaScript将不会显示链接):
Try this code, first without JavaScript, then run replaceLinks()
<style>
.restore a:link:not([href$=".jpg"]):not([href$=".jpeg"]):not([href$=".png"]){display:none}
</style>
<script>
function replaceLinks() {
var links = document.querySelectorAll('.restore a:link:not([href$=".jpg"]):not([href$=".jpeg"]):not([href$=".png"])');
for (var i = 0; i < links.length; i++) {
console.log(i,links[i]);
links[i].innerHTML = 'DOWNLOAD register here.';
links[i].href = 'register.php';
links[i].style.display='inherit';
}
}
</script>