我想将一个网站上的所有链接重定向到另一个域。除了几个菜单链接和网站中的一张图片。我所能找到的就是这段代码,它只是禁用了所有链接和想法
function disable() {
links=document.getElementsByTagName('A');
for(var i=0; i<links.length; i++) {
links[i].href="javascript:return false";
}
}
window.onload=disable;我想展示成吨的演示模板,人们可以下载,但这些模板有各种各样的链接,我不想让人们浏览,所以我想在模板里面放一张图片,说看看更多的模板。这是我想要启用的唯一链接
发布于 2013-01-27 09:08:29
以您的脚本为例,只需设置一个条件。我使用了描述here的inArray()函数。基本逻辑是设置一个名为good_links的数组,它是您不希望中和的链接列表。然后通过使用inArray()函数,disable()函数现在可以在逻辑上遍历所有链接,但忽略good_links
<script type="text/javascript">
function disable(){
var good_links = new Array();
good_links[0] = "http://www.google.com/";
good_links[1] = "http://www.yahoo.com/";
good_links[2] = "http://www.bing.com/";
links=document.getElementsByTagName('A');
for(var i=0; i<links.length; i++) {
if (!inArray(links[i].href, good_links)) {
links[i].href="javascript:return false";
}
}
}
function inArray(needle, haystack) {
var length = haystack.length;
for(var i = 0; i < length; i++) {
if(haystack[i] == needle) return true;
}
return false;
}
window.onload=disable;
</script>好了,这是我的整个HTML文件,它可以工作。唯一应该工作的链接是:谷歌,雅虎和必应。Apple、Catmoji和StackOverflow被禁用。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My Webpage</title>
<script type="text/javascript">
//<![CDATA[
function disable(){
var good_links = new Array();
good_links[0] = "http://www.google.com/";
good_links[1] = "http://www.yahoo.com/";
good_links[2] = "http://www.bing.com/";
links=document.getElementsByTagName('A');
for(var i=0; i<links.length; i++) {
if (!inArray(links[i].href, good_links)) {
links[i].href="javascript:return false";
}
}
}
function inArray(needle, haystack) {
var length = haystack.length;
for(var i = 0; i < length; i++) {
if(haystack[i] == needle) return true;
}
return false;
}
window.onload=disable;
//]]>
</script>
</head>
<body>
<a href="http://www.google.com/">http://www.google.com/</a><br />
<a href="http://www.apple.com/">http://www.apple.com/</a><br />
<a href="http://www.yahoo.com/">http://www.yahoo.com/</a><br />
<a href="http://www.catmoji.com/">http://www.catmoji.com/</a><br />
<a href="http://www.bing.com/">http://www.bing.com/</a><br />
<a href="http://www.stackoverflow.com/">http://www.stackoverflow.com/</a>
</body>
</html>发布于 2013-01-27 09:03:53
你需要找到一些你不想禁用的链接的属性,然后在循环时检查它。例如,如果图像和菜单链接的href属性为#:
function disableLinks () {
var allLinks=document.getElementsByTagName('A');
for(var i=0; i<allLinks.length; i++) {
if (allLinks[i].href !== '#') {
allLinks[i].href="javascript:return false";
}
}
}
window.onload = disableLinks;值得一提的是,在没有充分理由的情况下禁用/重定向一大堆链接是激怒用户并让他们永远不再访问您的站点的好方法。
发布于 2013-01-27 09:03:23
如果您正在使用Apache,并且您可以区分要重定向的链接和不要重定向的链接,您可以调整Apache mod_rewrite规则……
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.domain.com/$1 [R=301,L](.*)将不得不改变,但这只是一个开始。
https://stackoverflow.com/questions/14543350
复制相似问题