搜索并用超链接替换字符串

时间:2017-09-08 16:31:24

标签: javascript css

我不确定这是否可行,但我正在帮助一个用.aspx编译的相当大的网站 我们想要更改网站上的链接,但没有实际的位置来编辑链接的文本。但是,我可以使用CSS或Javascript编辑网站。

<li>
  <a href="otherpages.aspx" target="">Other Pages</a>
</li>
<li>
  <a href="bluepage.aspx" target="">Blue Page</a>
</li>

我想将蓝页的链接和文字更改为红页等内容。 例如:

<li>
  <a href="redpage.aspx" target="">Red Page</a>
</li>

是否可以使用CSS搜索和替换该超链接的文本?

我已经尝试创建覆盖原始文本和链接的叠加层,但它没有正确定位 页面取决于用户使用的浏览器。 例如:

<div id="cover"></div>


#cover {
background: url('../images/cover.png') no-repeat;
top: 80%;
margin-left: 0px;
height: 30px;
width: 203px;
position: relative;
}

任何人对如何使用CSS或Javascript替换文本有任何其他想法?

2 个答案:

答案 0 :(得分:1)

使用JavaScript尝试类似的东西,

var bluePage = document.querySelectorAll("a[href='bluepage.aspx']");
if (bluePage[0]) {
    bluePage[0].setAttribute("href", "redpage.aspx");
    bluePage[0].innerHTML="Red Page";
}

答案 1 :(得分:0)

CSS只会改变链接的外观。 href URI在下方保持不变,如果用户点击该链接,他们将被带到旧的链接位置。因此,您需要使用Javascript。

根据this answer,您可以使用Javascript进行搜索和替换:

<script type="text/javascript">
function replaceScript() {
    var toReplace = 'http://google.com';
    var replaceWith ='http://yahoo.com';
    document.body.innerHTML = document.body.innerHTML.replace(toReplace, replaceWith);
}
</script>

你可以在页面加载时初始化这个函数,如下所示:

<body onload="replaceScript();">

那应该替换整个页面中的字符串。但是,这里的主要缺点是它只替换页面加载上的链接。保存在服务器上的页面仍然会有旧的链接,这意味着当用户加载任何页面时会有一个小的延迟(可能是几十到几百毫秒),因为脚本需要完成它的工作,这需要一点点一点时间。此外,如果用户在浏览器中禁用了JavaScript,或者非浏览器代理(如机器人,抓取工具或网络服务)访问过它,那么它将无法工作,这不完美。< / p>