exlink.inc.php

サマリ外部サイトへのリンクに矢印をつける
リビジョン1.0
対応バージョン1.4.4
投稿者ありぃ
投稿日2004-11-09 (火) 20:54:44

外部サイトへのリンクに、矢印をつけますexternal_link.gif(こんな感じ)。呼び出されると、ページ全体に適用されます。MenuBarなどから呼び出すと便利かもしれません。

概要

実態は、その場所にJavaScriptのソースを書き込む*1だけのプラグインです。

外部サイトかどうかは、ホスト名で判別しています。例えば、hogehoge.comとfoo.hogehoge.comは別のサイト、hogehoge.com/MT/とhogehoge.com/pukiwiki/は同じサイトと判断します。

自作スキン/OrangeBoxなどでは、すでに組み込まれています。改めて導入する必要はありません。

種別

コマンド型プラグイン

書式

#exlink

引数は必要ありません。

ライセンス?

  • http://creativecommons.jp/licenses/by/1.0/
    • https://creativecommons.org/licenses/by/1.0/
  • 改変・再配布はご自由に。

ダウンロード & 設置方法

  • fileexlink.inc.php.2 <= 本体 ダウンロードできなくなっているので同様の動作をする物をこちらに用意してみました。 http://www.towano.net/ua-ks/index.php?wiki%A5%D1%A1%BC%A5%C4#i2e89951
    • ダウンロードできなくなっているのではなく、直接ブラウザで開くとファイルに書かれたjavascript を実行しようとして*2、ファイルの内容が表示されていない可能性大です。
      対象をファイルに保存すればよいでしょう
  • external_link.gif <= external_link.gif

exlink.inc.phpはpluginディレクトリに放り込んでください。external_link.gifはimageディレクトリなどに保存してください。

imageディレクトリ以外の場所に保存した場合は、exlink.inc.phpの20行目付近を修正してください。

カスタマイズ

スタイル

矢印の画像を表示するimgタグには、external_linkクラスが設定されています。CSSでの設定にご利用ください。

例
img.external_link{
         margin-right:.5em;
         margin-left:.2em;
}

JavaScriptのソース

以下のようなソース(実際にはscriptタグがつきますが)が出力されます。下のソースを.jsのファイルにして、スキンのheadタグ内で呼び出してもかまいません。

(横スクロールバーが出るので、適当に改行と空白を入れています)
function external_link(){
   var host_Name = location.host;
   var host_Check;
   var link_Href;

   for(var i=0; i < document.links.length; ++i)
   {
       link_Href = document.links[i].host;
       host_Check = link_Href.indexOf(host_Name,0);

       if(host_Check == -1){
           document.links[i].innerHTML
              = document.links[i].innerHTML 
                + "<img src=\"image/external_link.gif\" height=\"11px\" width=\"11px\" 
                    alt=\"[外部リンク]\" class=\"external_link\">";
       }

   }
}
window.onload = external_link;

ご意見

  • exlink.inc.phpとexlink.inc.php.1には誤りがあるので、削除してもらえればと思います>管理者の方。お手数おかけしてもうしわけないです。 -- ありぃ 2004-11-09 (火) 21:26:26
  • 代替テキストが文字化けする可能性があります。その場合は、本体と同じ文字コードで保存しなおしてください。 -- ありぃ 2004-11-09 (火) 22:00:01
  • 関連 : スキンにおける<meta>の出力dev:BugTrack/578 -- でぃあばぁ 2004-11-10 (水) 03:07:02
  • ifブロックの最後に以下のコードを挿入すると別窓で開くようになりますね。make_link.phpに手を入れなくて済むのでいい感じです。 :) -- jitte? 2005-03-11 (金) 21:51:42
    document.links[i].onclick = function () {
      window.open(this.href, "_blank");
      return false;
    }
    • こんな感じがいいのでは?onclick追加するぐらいならtargetを追加して、いちいち関数にする事無いかと -- shun? 2005-09-14 (水) 18:24:35
      document.links[i].target="_blank";
  • backプラグインで表示される「戻る」に矢印画像が表示されてしまいます。 -- 2005-06-20 (月) 19:54:52
  • backプラグインで矢印表示を避けるための修正。(codehighlightプラグインでも同様の現象だったんで、javascript使用のプラグイン系に対応できると思います) -- BECK? 2005-11-15 (火) 12:27:45
    jitteさんの修正と一緒に使うと幸せになれるかも。
    if(host_Check == -1 && (document.links[i].href.search(/^javascript:/i) < 0)){
  • ごめんなさい。mail:toも入れた方がよさげ;; -- BECK? 2005-11-22 (火) 17:24:17
    if(host_Check == -1 && (document.links[i].href.search(/^(javascript|mailto):/i) < 0)){
  • 呼び出し順によっては、他の設定などのwindow.onloadの設定を上書きするので、以下のようにしてもらえませんか? -- jjyun 2006-03-04 (土) 10:54:37
    try{
      window.addEventListener('load', external_link, false );
    }
    catch(e)
    {
      window.attachEvent('onload', external_link );
    }
  • クリッカブルマップでinnerHTML書き換えがエラーを起こすようなので以下のように追加してみました。 -- アクア? 2006-03-08 (水) 17:55:35
    if (document.links[i].tagName != "AREA"){
        document.links[i].innerHTML = document.links[i].innerHTML 
            + "<img src=\"image/external_link.gif\" height=\"11px\" width=\"11px\" 
             alt=\"[外部リンク]\" class=\"external_link\">";
    }
  • exlinkを利用させていただきました。ありがとうございます。外部リンクだけでなく同一ホストの特定フォルダ内にあるファイルだけ別窓で開くようにしたいのですが? exlink.inc.phpの記述をどのように変更すればできるでしょうか?お教え下さい。 -- まさる? 2006-06-30 (金) 16:21:10
  • InterWikiName でドメイン内のリンクであっても外部リンクと判断されるのは仕様でしょうか。 -- bbb? 2006-07-01 (土) 17:33:51
  • どなたかアイコンにのみ、新しいウィンドウで開くソースを頂けませんか? -- 2007-05-30 (水) 01:20:29
  • XHTML 1.1 invalidです。<script>~</script>の間は[CDATA]セクションです。スクリプト要素やスタイル要素の内容の中に含まれる要素は、XMLでは#PCDATA を持つものとして宣言されます。ここでXHTMLでは<script></script>あるいは<style></style>内をCDATAセクションでコード化する必要があります。 -- 2007-07-21 (土) 19:52:13
  • exlink.inc.php を利用させていただきました。 内部と外部のリンクの区別がついて、とても便利なのですが、メールアドレスのリンクも、外部リンクとして認識されます。 ちょっと意味合いが違う気がするので、mailtoの場合は、JavaScriptで除外する、というのはいかがでしょうか? (もしくはメール用のアイコンにするなど) -- akiko? 2009-08-03 (月) 11:24:02
    • Exp.
            // Added by Akiko on 20090803
            link_proto = document.links[i].protocol;
            if (link_proto == "mailto:") {
              // do nothing;
              return;
            }

*1 XHTMLだから外部ファイルにしなきゃいけないという話もありますが、まぁ動きますし。
*2 attach プラグインに脆弱性があると言われている理由かも・・・

添付ファイル: fileexlink.inc.php.2 6103件 [詳細] fileexlink.inc.php.1 940件 [詳細] fileexternal_link.gif 3472件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-06-06 (土) 22:16:02
Site admin: PukiWiki Development Team

PukiWiki 1.5.1+ © 2001-2016 PukiWiki Development Team. Powered by PHP 5.6.33-0+deb8u1. HTML convert time: 0.432 sec.

OSDN