0

あるサイトのすべてのリンクを別のドメインにリダイレクトしたい。サイト内のいくつかのメニューリンクと1つの画像を除いて..私が見つけたのはこのコードだけで、すべてのリンクを無効にするだけです。

function disable() {
  links=document.getElementsByTagName('A');
  for(var i=0; i<links.length; i++) {
    links[i].href="javascript:return false";
  }
}
window.onload=disable;

たくさんのデモテンプレートを表示したいのですが、それらのテンプレートには、ネットサーフィンしたくないあらゆる種類のリンクが含まれているので、テンプレート内に1つの画像を入れて「他のテンプレートを見てください」と言います。それが私が有効にしたい唯一のリンクです

4

3 に答える 3

0

無効にしたくないリンクの属性を見つけて、ループ中にそれを確認する必要があります。たとえば、画像とメニューのリンクが属性#としてある場合: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-27T01:03:53.123 に答える
0

例として使用しているスクリプトを使用して、条件を設定するだけです。ここでinArray()説明する関数を使用しました。基本的なロジックは、中和したくないリンクのリストであるという配列を設定することです。そして、関数を使用することにより、関数はすべてのリンクを論理的にトラバースできますが、 :を無視します。good_linksinArray()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ファイル全体です。動作するはずのリンクは、Google、Yahoo、Bingのみです。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-27T01:08:29.440 に答える
-1

Apacheを使用していて、リダイレクトするリンクとリダイレクトしないリンクを区別できる場合は、Apachemod_rewriteルールを適応させることができます...

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]

変更する(.*)必要がありますが、それは始まりです。

于 2013-01-27T01:03:23.033 に答える