用Javascript取代条件

时间:2014-04-10 05:28:53

标签: javascript css

我使用此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等结尾的链接 - 因此它只会重写链接,而不是链接到其全尺寸图像的缩略图?

3 个答案:

答案 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>