*リンクを別窓で開く機能の標準実装 [#x93bd52a] -ページ: BugTrack -投稿者: [[tera]] -優先順位: 普通 -状態: 提案 -カテゴリー: 本体新機能 -投稿日: 2004-10-14 (木) 10:49:21 -バージョン: 1.4.4 ----------------------------- #contents ----------------------------- **メッセージ [#t6b5c7ae] [[PukiWiki/1.4/ちょっと便利に/リンクを別窓で開く]]機能の標準実装を希望します。 [[XHTML]]1.1ではtarget属性が使えないので、それをJavaScriptで実現させた物で、PukiWiki外へのリンクを別に開きたい場合などに非常に重宝するものです。 PukiWikiとHTMLによるサイトをうまく融合することにも利用出来ます。(フレームなど) 過去の質問箱などを見ると、元々要望が多かった機能だったようです。 ***参考 [#l0e0602c] -[[PukiWiki/1.4/ちょっと便利に/リンクを別窓で開く]] -[[org:質問箱/373]] -[[作者サイトの「pukiwikiのリンクを別窓で開く」>http://inagi.himitsukichi.com/~aozora/cgi-bin/pukiwiki/pukiwiki.php?PukiWiki%A4%CE%A5%EA%A5%F3%A5%AF%A4%F2%CA%CC%C1%EB%A4%C7%B3%AB%A4%AF]] ***以下は1.3系の話題 [#bab31201] -[[org:欲しいプラグイン/38]] -[[org:質問箱/108]] -[[org:質問箱/174]] ------------------------- ** [[XHTML]]1.1、アクセシビリティ vs 「target属性により新規ウィンドーを開く」[#vfa8b64e] -なぜ そんな便利な機能がXHTML1.1で無くなったのかを考えてみられましたか? [[アクセシビリティ>Accessibility]]という言葉を御存じですか? -- [[merlin]] &new{2004-10-14 (木) 11:08:25}; --「誰にでも見れる環境を作ること」で解釈はあっていますでしょうか?フレームをなるだけ排除するということでこの機能がXHTML1.1から無くなったということでしょうか?別窓に開くことがアクセシビリティにどう繋がるのか、無学ゆえ、教えていただけるのでしたら助かります。 -- [[tera]] &new{2004-10-14 (木) 11:35:04}; ---キーボード一つで見ることができるウェブサイトを作るという部分でtarget属性が適さないと判断された結果でしょうか?~ それとも、もっと単純に「JavaScriptを使うということ」自体が問題とされているのでしょうか?~ 単に、別ウィンドウを開くこと自体がアクセシビリティに反しているということでしょうか? -- [[tera]] &new{2004-10-14 (木) 12:00:56}; ---そういうことでしたら、提案を取り下げるべきでしょうか? -- [[tera]] &new{2004-10-14 (木) 12:04:13}; ---XHTML1.1から消された(正確には外部モジュール化された)理由はHTMLで実装するべき機能ではないからです。(X)HTMLはHyperText Markup Languageであって、意味による区別(<ins><del>タグとか)を行う目的にのみ絞られた設計が進められています。JavaScriptによって対応する事も可能ですが、JavaScriptでは設定がoffになっている場合には動作しない、という問題も発生します。勿論、キーボードで扱えなくなる事も問題ですが、もっと単純にXHTML的に推奨されていないわけです。ですから、XHTMLでtarget属性がモジュール化されているのと同様に、PukiWikiでも拡張機能として扱うのが妥当だと思われます。 -- [[Ratbeta]] &new{2004-10-14 (木) 13:44:39}; ---JavaScriptで対応する場合は、対応していない環境でも正常に動作するよう考慮する必要が有りますから…。関連:BugTrack/578 -- [[Ratbeta]] &new{2004-10-14 (木) 13:48:44}; -アクセシビリティガイドラインの10.1に載っていますが、実際には、ユーザビリティに属する概念から新規ウィンドーを開く属性は廃止方向です。理由は、ナビゲーションを失うということと、ウィンドーを新規に開くかどうかは、HTML側の問題では無くユーザー(閲覧者)に任せられるべき問題だからです。((最近話題になっているSEOに関しても良くないですけど)) 無学でも、文字が読めない((話の本筋とは関係ありませんが、「文字が読めない、識字できない」の意味でここに書かれていた言葉は差別語・不快用語にあたりますので勝手ながら書き換えさせていただきました。参考リンク:[[放送禁止用語一覧>http://page.freett.com/storyland/kikaku/kinshi/]] -- arky &new{2004-10-14(木) 15:37:07};))のではないのですから [[Accessibility]]のページに載っているリンクなどに目を通されたらいかがかと思います。 -- [[merlin]] &new{2004-10-14 (木) 14:11:16}; --さしでがましいことをしてすみません。 -- [[arky]] &new{2004-10-14 (木) 16:02:41}; ---あっ、すみません。さしでがましくは無いですよ。Wikiなんですから -- [[merlin]] &new{2004-10-14 (木) 17:38:27}; -標準での実装は無理だとしても、今のように複数のファイルを改造するではなく、固有のプラグインなどの外部モジュールを置くことのみでこれらの機能が実現できればかなり便利でしょうね。モジュールを入れた人のみの拡張機能で、入れてない人には関係の無いというような‥‥。 -- &new{2004-10-14 (木) 18:54:42}; -(今日はみんな疲れているんだ。そうに違いない) そうですね。ちょうど数日前から、パラグラフ編集の副産物である「キャンセル」ボタンを本体に盛り込もうとしているところですが、今回の件についても、それぞれの要素を複数の提案に分解して行くと、もう少し話が進むと思いますよ :) -- [[henoheno]] &new{2004-10-14 (木) 21:05:30}; ----------------------------- ** [[BugTrack/578]] JavaScript 使用時の<meta>出力の管理 [#v225590b] -これに対応させるなら上に挙げたBugTrack/578の修正を先に行わなければいけませんね…(TrackBackを使用しない環境で文法違反が発生します)。 -- [[Ratbeta]] &new{2004-10-16 (土) 11:37:41}; --[[BugTrack/578]]で書くべきかも知れませんがこちらに書きます。私の場合は Ratbetaさんの指摘のとおり、あってもなくても meta JavaScript は記述しています。(というより、default.jsを読み込んでいる関係上そうせざるをえなかったのですが・・・) -- [[みこ]] &new{2004-10-16 (土) 11:48:23}; --どのみちXHTMLというのはタグ(とその中の属性)さえあっていれば中身は問わない(問えない)ので、管理者およびユーザに混乱をおこさないためにも meta JavaScript はデフォルトであるべきだとおもっています。(( ちゃんと動作するのに、使ってないコードがあるから気持ち悪いなんていうのは開発者・管理者のエゴだとおもってますから (^^; )) -- [[みこ]] &new{2004-10-16 (土) 11:53:54}; --[[BugTrack/578]]は片付けました。次いきましょ~次どうぞ~ :) ((※音楽とともに大道具が左右に運ばれ、舞台が回転しはじめる)) -- [[henoheno]] &new{2004-10-16 (土) 13:54:15}; ------------------------- ** [[XHTML]]1.1、アクセシビリティ vs 「JavaScriptにより新規ウィンドーを開く」 その1 [#v832341a] -ということで、上の話題を前提にして、「PukiWikiに(追加で)JavaScriptを盛り込む」、あるいは「より簡単に盛り込める」様にするために必要な要素、あるいはPukiWiki本体の進化などについて意見のある方もぜひコメントして下さい。題材はコレ(この件)で。 -- [[henoheno]] &new{2004-10-14 (木) 21:08:23}; -それと、skin/trackback.js が寂しそうにしているので、話に混ぜてやって下さい。 -- [[henoheno]] &new{2004-10-14 (木) 21:18:47}; -なぜXHTML1.1で無くなった機能が再三要望として上がるか、という観点もあると思いますよ。以前の議論も一応読んではいましたが、開発者側あるいはテクニカル側からはXHTML1.1 validかつアクセシビリティの業界動向にあわせることが重要というのは、大義としては、わかります。ただ、私の例でいうと、サイトのメインユーザが自分自身であり、その他のユーザを含めてもかなり限定した範囲しか考えなくてよい状況なので、アクセシビリティの優先度は限りなく低いです。極論すれば自分さえ使いやすければよいサイトもあると思うのです。他のサイト管理者の方も、少人数やブログ的用途で使われている場合は、近い状況なのではと想像しています -- [[jitte]] &new{2004-10-14 (木) 23:05:33}; -ボランティアがベースのPukiWiki開発者の方々が、やりたい方向にイニシアチブを取って進んでいくのは当然のことで、ケチをつけるつもりは毛頭ないのですが、そういった思惑や業界動向とは別のところで、さまざまな用途でPukiWikiが気に入られて、使われるようになった、ということではないでしょうか。プラグインかiniファイルで切り替える程度でよいので、本体に組み込んでいただくことを、PHPは書けないけれどPukiWikiをこよなく愛する''ユーザとして''強く希望します。 :) -- [[jitte]] &new{2004-10-14 (木) 23:06:09}; --[[org:自作プラグイン/opf.inc.php]]とか・・・ -- [[teanan]] &new{2004-10-14 (木) 23:07:56}; --書き方まずかったですね。opfのことは知っていた((作者は「pukiwikiのリンクを別窓で開く」と同じ方ですし))のですが、私の場合は、自動で別窓になって欲しいのです。実装方法の例としてプラグインと言ってしまいました。opfで十分という人もいるでしょうね。 -- [[jitte]] &new{2004-10-14 (木) 23:38:33}; -jitteさんに同意。でも自分で書け!って言われるのよねー。それが敷居だって。 -- &new{2004-10-15 (金) 07:30:48}; --無くて誰も作ってくれそうにない場合は、自分で作るしかないでしょうね。 -- &new{2004-10-15 (金) 07:55:40}; -正直な所、これだけ話が長くなっていると思っていませんでした。 (^^; 私は技術的なことはよく分からない一介のユーザです。でも、PukiWikiの便利さをこよなく愛する一人です。「こんなこといいな、出来たらいいな」の気持ちでついこのようなことを書いてしまいましたが、このような話になるとは思っていませんでした。 -- [[tera]] &new{2004-10-15 (金) 09:01:47}; --アクセシビリティという言葉自体は存じておりました。しかしそれについての知識を充分深めることはしておりませんでした。ここの方々のように広く深く知識をもたずにここに書き込んだことを悔いております。一介のユーザは無謀な欲求は持たずに、標準のまま使うのが一番なのかもしれません。 :( ただ、技術論を展開することが出来ないユーザがいること、またそういうユーザもPukiWikiを愛していることをご理解いただければ幸いです。もう少し勉強して出直します。 -- [[tera]] &new{2004-10-15 (金) 09:07:23}; -XHTML Not Validでいいのであれば、下記の1行を変えるだけでいいんですけどね。Validかどうかなんてどうでもいいユーザも多いことは確かなので、このような解があるのもありかと思いますが・・・ -- [[teanan]] lib/make_link.php 338行目付近 - return "<a href=\"{$this->name}\">{$this->alias}</a>"; + return "<a href=\"{$this->name}\" target=\"_blank\">{$this->alias}</a>"; --今後 XMLを厳密解釈するブラウザが増えてくると思われます。それだけだとだめでヘッダもちゃんとしておかないとダメでしょう -- [[merlin]] &new{2004-10-15 (金) 09:26:29}; --でもmake_link.phpのその部分を改造するのでは、全部のリンクが_blankで開くことになるのでは?当該改造では、URIの種類によって開く動作を設定するようになっていますが。 -- &new{2004-10-15 (金) 09:54:00}; --URLで書かれたものについて別画面で開きます(BracketNameは同じ画面に表示)。もちろん、[[PukiWiki/1.4/ちょっと便利に/リンクを別窓で開く]]よりも低機能であることは承知していますが、これだけでも事足りる方は多いはず。要は、機能を絞ればPHPが分からない方でも簡単にパッチ当てできる方法がありますよ、という例をあげたかったのです。((つまり、使いたい人は自分でパッチ当ててね、と (^^; )) -- [[teanan]] &new{2004-10-15 (金) 10:57:00}; ---XHTML Not Validでいいのであれば(拘らなければ)そういう方法の方が早いですね。 -- &new{2004-10-15 (金) 11:20:02}; -この機能は、WindowsのExploreでの動作と同様にブラウザ側でもつべき機能でしょう。すなわち、Websiteから新しい窓開けといっても、ブラウザの設定如何によって 新しい窓で開かれたり、開かなかったり、既存の窓で開いたりを選択できるような形ですね。W3Cの勧告では、そういった機能がブラウザに持たされるまで target要素は無くす方向と言っています。では、ブラウザが対応するまでPukiWikiではどうするのかまたその実装をどうするか ってことになりますね。技術的には、CookieとJavascriptで実現できますが、もっと良い解はないのかな? ((うちでは、どちらも普段は切られていたりする (^^; )) -- [[merlin]] &new{2004-10-15 (金) 10:34:09}; -PukiWikiは、多数がそうだからそれに対応するという方向よりは、みんな 幸せになろうよって方向で開発されていると思っています。なので、多数がそうだからそうするっていう考え方は無く、いろいろな場合に適用できるようにしていく方向だと思います。ただ、開発パワーは限られていますので優先順位の問題かと思います。 -- [[merlin]] &new{2004-10-15 (金) 10:43:09}; -XOOPSみたいなスキン選択の仕組みって難しいのでしたっけ。もし実現可能であれば、別窓設定をスキンに仕込んでおいて、ユーザがスキンを選ぶことで別窓動作が選択できる、というのはどうでしょう。(1)サイト設置者の意図として、iniかconfig:でデフォルト設定できる (2)ページ作者の意図として、インラインまたはブロックプラグインで動作選択できる (3)読者の意図として、(1)(2)に従うか無視するかをスキンで選べる、と。携帯端末の場合はスキンを固定するような制御もできますよね。 -- [[jitte]] &new{2004-10-16 (土) 10:08:45}; ------------------------- ** [[XHTML]]1.1、アクセシビリティ vs 「JavaScriptにより新規ウィンドーを開く」 その2 [#j03ac9c8] -CookieとJavaScirptを用いる事は(それによってXHTML Not Validにならないのであれば)いいと思います。勿論、ブラウザの対応を見て行く必要が有りますし、mobile環境を考慮する必要が有ります。開発はできるだけXHTML Validでやってほしい、というのが(XHTML Validにこだわる)私の考えです。方法としては、ユーザ定義を用いてtarget属性を表示することもできますね。ユーザ定義なら、導入も簡単ですし、Valid派はそれを削除するだけで済みますし…(でも既存のリンクとの共存が難しいですね…)。 -- [[Ratbeta]] &new{2004-10-15 (金) 18:28:30}; --JavaScript/target/Cookie関連の話は別の所にしませんか?このページだけでは要点の整理なども出来ませんし、このページに合わない話題も増えてくるはずですので…。 -- [[Ratbeta]] &new{2004-10-15 (金) 18:30:26}; --Cookie&Javascriptは XHTML Validのまま実装できると思います。窓を新規に開くのをサーバ側で指定した場合に、ユーザ側でどうするかを選択する画面が最初に出て、その値はCookieとしてユーザ側が持つ。それにしたがって Javascriptで窓を開くというような実装を考えています。問題は Cookieの期限ですけど.. どうかなぁ? -- [[merlin]] &new{2004-10-15 (金) 21:21:06}; --一度Cookieで開くよう設定してからJavaScriptがoffにされたらどうしましょう?(^^; また、"このリンクは新規ウインドウで開きたいが、こっちのリンクは…"というのも出て来るでしょうから…。umm,..(--; -- [[Ratbeta]] &new{2004-10-15 (金) 22:02:37}; ---javascript の on/offは検出できたと思います。 新規窓を開くかどうかはデフォルト値を設定しておいてそれ以外のリンクを置きたい場合は、インラインプラグインでは如何でしょう? -- [[merlin]] &new{2004-10-16 (土) 07:23:13}; --単に意味を持たないイメージ( alt=" "のイメージ)をリンクの横に置いて、そっちを target jump するんじゃだめなの?([[サンプル>http://cafelounge.net/dev/plus/]]) XHTML1.1 も アクセシビリティ(alt属性の例外)も ユーザビリティ(ユーザに選択権あり)もこれで OK だとおもいますが・・・(元ネタはしろくろのへや) -- [[みこ]] &new{2004-10-16 (土) 10:07:03}; -見た目はみこさんのイメージでいいと思いますが、aタグを使わずにimgタグにonclick属性(とonkeypress属性)を付加する、というのはどうでしょうか?alt属性(とtitle属性)には"(with new window)"とか差し障りのない文字列を付けておくというのもいいと思います。できればCSSでクラス設定した時みたいに通常は選択しても無視される、ってのがいいと思いますが、流石にそれは無理ですよね(^^; -- [[Ratbeta]] &new{2004-10-16 (土) 11:21:08}; --altに何か入れると読み上げのときに混乱しませんか?何も入れないほうがアクセシビリティ的にはいいかとおもいますが・・・ -- [[みこ]] &new{2004-10-16 (土) 11:45:32}; --altに何もないと、読み上げ(が必要な)環境で新しいウインドウでリンクを開きたい場合にリンクが何処にあるか分からない、という事になると思います。そういう場合には新しいウインドウでリンクを開く、なんてことはないのかもしれませんが…。 -- [[Ratbeta]] &new{2004-10-16 (土) 12:10:47}; --そのとおり!・・・というより読み上げの場合は onclick をリンク代わりに使えませんので読み上げず、動作せずのほうが自然です。%%携帯からなのでツリーにぶら下げられなくてごめんなさい%% -- [[みこ]] &new{2004-10-16 (土) 12:36:39}; --ツリーに下げておきました。で、読み上げではonclick(onkeypress)属性は使えないんですか…。それなら、何もない方がいいですね。alt属性が空なのもXHTML的にはOKなのでいいの…かな?(^^; -- [[Ratbeta]] &new{2004-10-16 (土) 13:58:43}; ---はい、altが空なのはOKの上に、読み上げで2度読みおよびURL読みさせないため altの例外とするのはJISアクセシビリティ 5.4aで必須です。 [[解説>http://jp.fujitsu.com/webaccessibility/v2/54.html]] および [[JISX8341-3>http://www.jisc.go.jp/app/pager?id=24719]]-- [[みこ]] &new{2004-10-17 (日) 01:39:50}; -とりあえず、Ratbeta さんのパターン案である <a href="xxx">リンク<img src="yyy" alt=" " title=" " onclick="zzzz"></a>としてみました。 onkeypress は何を押しても反応するので外しましたが、その挙動でいいですか?>Ratbetaさん -- [[みこ]] &new{2004-10-17 (日) 01:43:03}; --これでいいと思います。onkeypressはこの場合意味がないので外しても問題ないでしょうし。後は設定のon/offができればそれでいいと思います。 -- [[Ratbeta]] &new{2004-10-17 (日) 11:21:51}; --元ソースが「別窓で開く」からの派生なのですでにpukiwiki.ini.php には埋め込んでいますが、ここのところの本家cvs版修正ラッシュに追いつくために、どこを修正したか忘れかけています (^^; しばしお待ちを・・・ -- [[みこ]] &new{2004-10-17 (日) 16:10:50}; --きょうも cvs は更新ラッシュがかかっているようなので、面倒なんで[[PukiWiki Plus! u3 開発版>http://pukiwiki.cafelounge.net/plus/?Download#devel]]の1機能として公開しました。もし、本家にマージするなら、どなたかこの件のみ上手くdiffしてください (^^; (無責任モード (^^;) -- [[みこ]] &new{2004-10-18 (月) 01:12:13}; --議論の結果ポイントが明確になっていればOKなのですよ。何と何をどうまとめてどこをどうすれば良いですか? :) -- [[henoheno]] &new{2004-10-18 (月) 21:39:01}; --結果としてはpukiwiki.ini.phpで使用するしないを指定できる一機能として取り込みの方向でお願いします。diffを含めてみこさん御意見をどうぞ (^^; -- [[Ratbeta]] &new{2004-10-19 (火) 17:19:10}; ---えっと、わたしとしては対決(vs.)しているつもりはないし、オフィシャルではいろいろなこだわりやしがらみもあると思うので正直なところ取り込まれても取り込まれなくてもどっちでもいいです。ちなみに、この件については実装サンプルまであるので、初期に意見のあったmerlinさんのコメントもほしいところ((すくなくとも、わたしよりは間違いなくアクセシビリティに対して専門的な知識をもっていると思うので (^^; ))です。 -- [[みこ]] &new{2004-10-20 (水) 13:39:55}; ---アクセシビリティ的には問題無いと思います。読み上げソフトでも問題ないですね。ただ、onclickとonkeypressは対で使うことが推奨されているのでonkeypressも追加しては如何でしょう? -- [[merlin]] &new{2004-10-21 (木) 03:37:04}; ---おそらく、対で使うという根拠は Techniques for WCAG-1.0(12.4) ですか?これは、WCAG-1.0 と違い、現実として即していないと判断しています。なぜなら、いまの実装ならどのブラウザの実装もTABなどでそこにフォーカスはいかないためと、a タグに入れると逆にTABでも反応してしまうためです。[[WCAG-1.0 デバイスに依存しない>http://fuji.u-shizuoka-ken.ac.jp/~ishikawa/waipagej.htm#device-independent]] -- [[みこ]] &new{2004-10-21 (木) 11:00:02}; ---ただ、そのコメントがくるのは織り込み済みでWCAGチェッカなどを気にする方もいらっしゃるでしょうから [[PukiWiki Plus! u3 開発版>http://pukiwiki.cafelounge.net/plus/?Download#devel]]では ja.lng で修正できるようにしています。((個人的には設定項目が多くなるのはシンプルでなくなるので大嫌いなのですが&sad;)) -- [[みこ]] &new{2004-10-21 (木) 11:28:06}; ---はい 12.4ですね。 onkeyperss 了解。 ちょっと寝惚けてましたね。少し実装を見てからコメントいたします -- [[merlin]] &new{2004-10-21 (木) 15:43:48}; #comment -------------------------------- ** 同じPukiWiki内、同じコンテンツ内、同じサイト内、サイト外のリンク判別 [#v827bf64] -みこさんのサンプルを見て思ったのですが、サイト外へのリンクであることが一目で判別できるのはいいですね。別窓の指定なんかするつもりがない人も、サイト外へのリンク自動表示機能ということであれば、需要がありそうです。 -- [[jitte]] &new{2004-10-16 (土) 22:34:37}; --Windowsのショートカットアイコンを使ってる例を偶然見かけました :) → http://www.cybergarden.net/xhtml/basic.html -- [[jitte]] &new{2004-10-16 (土) 22:36:21}; -う、ぱんださんのとこでもとからリンクアイコンついてましたね。見逃してました^^;; -- [[jitte]] &new{2004-10-19 (火) 06:45:49}; #comment