- 追加された行はこの色です。
- 削除された行はこの色です。
** exlink.inc.php [#rd958a1e]
|RIGHT:100|LEFT:360|c
|~サマリ|外部サイトへのリンクに矢印をつける|
|~リビジョン|1.0|
|~対応バージョン|1.4.4|
|~投稿者|[[ありぃ]]|
|~投稿日|&new{2004-11-09 (火) 20:54:44};|
外部サイトへのリンクに、[[矢印をつけます&ref(external_link.gif);>./]](こんな感じ)。呼び出されると、ページ全体に適用されます。MenuBarなどから呼び出すと便利かもしれません。
#contents
**概要 [#v1aa605a]
実態は、その場所にJavaScriptのソースを書き込む((XHTMLだから外部ファイルにしなきゃいけないという話もありますが、まぁ動きますし。))だけのプラグインです。
外部サイトかどうかは、ホスト名で判別しています。例えば、hogehoge.comとfoo.hogehoge.comは別のサイト、hogehoge.com/MT/とhogehoge.com/pukiwiki/は同じサイトと判断します。
[[自作スキン/OrangeBox]]などでは、すでに組み込まれています。改めて導入する必要はありません。
**種別 [#o0602d48]
コマンド型プラグイン
**書式 [#q6e408c3]
#exlink
引数は必要ありません。
**ライセンス? [#w952457f]
-http://creativecommons.jp/licenses/by/1.0/
-改変・再配布はご自由に。
**ダウンロード & 設置方法 [#tda46fce]
-&ref(exlink.inc.php.2); <= 本体 ダウンロードできなくなっているので同様の動作をする物を[[こちら:http://www.towano.net/ua-ks/index.php?wiki%A5%D1%A1%BC%A5%C4#i2e89951]]に用意してみました。
-- ダウンロードできなくなっているのではなく、直接ブラウザで開くとファイルに書かれたjavascript を実行しようとして((attach プラグインに脆弱性があると言われている理由かも・・・))、ファイルの内容が表示されていない可能性大です。&br;''対象をファイルに保存''すればよいでしょう
-&ref(external_link.gif); <= external_link.gif
exlink.inc.phpはpluginディレクトリに放り込んでください。external_link.gifはimageディレクトリなどに保存してください。
imageディレクトリ以外の場所に保存した場合は、exlink.inc.phpの20行目付近を修正してください。
**カスタマイズ [#eb1f2daf]
***スタイル [#x0f169a1]
矢印の画像を表示するimgタグには、external_linkクラスが設定されています。CSSでの設定にご利用ください。
例
img.external_link{
margin-right:.5em;
margin-left:.2em;
}
***JavaScriptのソース [#r3ca9618]
以下のようなソース(実際には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;
**ご意見 [#te5e717e]
-exlink.inc.phpとexlink.inc.php.1には誤りがあるので、削除してもらえればと思います>管理者の方。お手数おかけしてもうしわけないです。 -- [[ありぃ]] &new{2004-11-09 (火) 21:26:26};
-代替テキストが文字化けする可能性があります。その場合は、本体と同じ文字コードで保存しなおしてください。 -- [[ありぃ]] &new{2004-11-09 (火) 22:00:01};
-関連 : スキンにおける<meta>の出力[[dev:BugTrack/578]] -- [[でぃあばぁ]] &new{2004-11-10 (水) 03:07:02};
-ifブロックの最後に以下のコードを挿入すると別窓で開くようになりますね。make_link.phpに手を入れなくて済むのでいい感じです。 :) -- [[jitte]] &new{2005-03-11 (金) 21:51:42};
document.links[i].onclick = function () {
window.open(this.href, "_blank");
return false;
}
--こんな感じがいいのでは?onclick追加するぐらいならtargetを追加して、いちいち関数にする事無いかと -- [[shun]] &new{2005-09-14 (水) 18:24:35};
document.links[i].target="_blank";
-backプラグインで表示される「戻る」に矢印画像が表示されてしまいます。 -- &new{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]] &new{2005-11-22 (火) 17:24:17};~
if(host_Check == -1 && (document.links[i].href.search(/^(javascript|mailto):/i) < 0)){
- 呼び出し順によっては、他の設定などのwindow.onloadの設定を上書きするので、以下のようにしてもらえませんか? -- [[jjyun]] &new{2006-03-04 (土) 10:54:37};
try{
window.addEventListener('load', external_link, false );
}
catch(e)
{
window.attachEvent('onload', external_link );
}
- クリッカブルマップでinnerHTML書き換えがエラーを起こすようなので以下のように追加してみました。 -- [[アクア]] &new{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の記述をどのように変更すればできるでしょうか?お教え下さい。 -- [[まさる]] &new{2006-06-30 (金) 16:21:10};
- InterWikiName でドメイン内のリンクであっても外部リンクと判断されるのは仕様でしょうか。 -- [[bbb]] &new{2006-07-01 (土) 17:33:51};
- どなたかアイコンにのみ、新しいウィンドウで開くソースを頂けませんか? -- &new{2007-05-30 (水) 01:20:29};
- &color(red){XHTML 1.1 invalid};です。<script>~</script>の間は[CDATA]セクションです。スクリプト要素やスタイル要素の内容の中に含まれる要素は、XMLでは#PCDATA を持つものとして宣言されます。ここでXHTMLでは<script></script>あるいは<style></style>内をCDATAセクションでコード化する必要があります。 -- &new{2007-07-21 (土) 19:52:13};
#comment