Wikipedia:井戸端/subj/節リンク移動問題へのJavaScript方式による対処の提案
![]() |
|
節リンク移動問題へのJavaScript方式による対処の提案
[編集]以下のとおり、提案いたします。--mizusumashi(月間感謝賞を応援します) 2009年2月5日 (木) 15:47 (UTC)
提案の概要
[編集]現在、Firefoxでは、節編集リンクが次のように表示される問題があります:
画像をごらんになれば分かるように、 Firefoxなどのブラウザでは、節編集リンクが意図どおりに表示されないことがあります。提案は、これらを、次のように表示されるようにすることを目的としています:
ノートのキャプチャ画像による詳しい説明もご覧ください。
何が問題か?
[編集]次の画像をご確認ください:
-
図1.1 Windows XP + Firefox
-
図1.2 Windows XP + Safari
-
図1.3 Windows XP + Google Chrome
これらの画像では、節編集リンクが移動し、それによって本文が読めなくなってしまっています。実際の記事から例をとると、私が普段使っている環境(Windows XP + Firefox + 1024×768ピクセルのモニタでウィンドウ最大化)では、ヴォルフガング・アマデウス・モーツァルト#容姿、ドイツ語#歴史、フォボス (衛星)#フォボス空洞説などで、本文の一部が読めなくなります。
どのような対処が考えられるか?
[編集]この問題の対処としては、いまのところ、ドイツ語版などで採用されている、節編集リンクの位置をJavaScriptで動的に変更する方法に支持があります(参照:MediaWiki‐ノート:Common.css#H1~6に「clear: both」を設定する提案)。これは、Bugzillaでは“German way”などと呼ばれているようですが、ここでは「JavaScript方式」と呼ぶことにします。
また、このJavaScript方式は、細部には違いがありますが、ブルガリア語版、ボスニア語版、フランス語版、アルピタン語版、クロアチア語版、ハンガリー語版、イタリア語版、グルジア語版、オセット語版、ポーランド語版、シチリア語版、スロバキア語版、スウェーデン語版、タガログ語版、トルコ語版、漢文版、広東語版、スペイン語版などでも採用されています。
具体的内容
[編集]以上を踏まえ、ドイツ語版などから次の点について手を加えた、JavaScript方式の解決を提案します:
- {{節リンク拡張}}も移動させる
- JavaScriptでは、CSSクラスだけ切り替える。これによって、(1)保守しやすくなる、(2)ユーザースタイルシートなどでのカスタマイズをやりやすくなる、という効果が見込めるものと思います。
- ページのロード終了後、節編集リンクがピョンと移動する現象(「ジャンプ」)に対処するガジェットを二種類追加。
動作イメージは、次の画像をご確認ください:
-
図2.1 (図0.3と同じ)
-
図2.2 (図0.4と同じ)
WindowsXP + Internet Explorer 7、Firefox、Safari、Google Chrome、Opera、Sleipnirで、可能な範囲の動作確認をしています。
ただ、導入するシステムが複雑な分、何か意図しない不具合が出ないか、ガジェットが意図どおりに動作するか、というのはいくらかの不安があることは否定ができません。そのため、実際に反映する段階での調整、部分的な仕様変更などがありえることは了承していただければと思います。
作業内容
[編集]- MediaWiki:Common.cssに、利用者:Mizusumashi/monobook.cssの指定を追加する。
- {{節リンク拡張}}に、利用者:Mizusumashi/Template/節リンク拡張の内容を複製する(差分)。
- MediaWiki:Common.jsに次のコードを追加する:
importScript('MediaWiki:Common.js/MoveEditsection.js');
- MediaWiki:Common.js/MoveEditsection.jsを作成し、利用者:Mizusumashi/Script/MoveEditsection.jsのコードを複製する。
- MediaWiki:Gadget-MoveEditsectionAntiJump.cssを、おおむね、次の内容で作成する:
.editsection { display: none; }
このガジェットを選択することによって、「ジャンプ」を起こさせないようにします。.editsection-expands {display: none; }
- MediaWiki:Gadget-MoveEditsectionDisable.jsを、次の内容で作成する:MediaWiki:Common.js/MoveEditsection.jsの機能を停止させるガジェットになります。
var moveEditsectionDisable = true;
- MediaWiki:Gadget-MoveEditsectionDisable.cssを、おおむね、次の内容で作成する:
.editsection { display: inlene; }
本来、MediaWiki:Gadget-MoveEditsectionAntiJumpとMediaWiki:Gadget-MoveEditsectionDisableは同時に有効するものではないが、同時に有効にしてしまった場合に、節編集リンクが消えることを防ぐ。.editsection-expands {display: inlene; }
- ガジェットを導入するためのその他の作業 - MediaWiki:Gadgets-definitionの編集、MediaWiki:Gadget-MoveEditsectionAntiJump、MediaWiki:Gadget-MoveEditsectionDisableの作成など。
(修正:2009年2月5日 (木) 16:15 (UTC))
(修正:2009年2月5日 (木) 16:30 (UTC))
(修正:2009年2月6日 (金) 11:00 (UTC))図に番号を付す --ととりん
(修正:2009年2月6日 (金) 13:55 (UTC))
(修正:2009年2月13日 (金) 09:04 (UTC))
(修正:2009年2月17日 (火) 15:59 (UTC))
(修正:2009年2月21日 (土) 10:03 (UTC))
(修正:2009年2月26日 (木) 13:11 (UTC))
(修正:2009年2月28日 (土) 02:25 (UTC))
(修正:2009年3月7日 (土) 03:33 (UTC))
コメント
[編集]いま賛否をとる段階なのか、まだ意見を募る段階なのか分かりません。端的な賛否でも、改善案でも、ご意見をいただければ幸いです。--mizusumashi(月間感謝賞を応援します) 2009年2月5日 (木) 15:47 (UTC)
- この件に関しては結構議論に加わっていて事情を知っているはずの身なのですが、『具体的提案・動作イメージ』『作業内容』節の内容がどうにも頭に入ってきません。初見の人には、その前の節も含めて「何やら分からない難しいことをやっているぞ」としか思えないのではないかと心配します。
- 技術的な問題はとりあえず置いておいて(おそらく大部分の人は技術的な部分に興味が無い)、「変えるとどうなるか」をもう少し初見の人に解り易くすべきではないかと思います。
- と言っておきながらも、私自身は説明が下手糞なので説明者としては棄権させていただきます。すみません。--ラッキースター・キッド ◆Luck.w.AEQ 2009年2月5日 (木) 22:40 (UTC)
- #提案の概要節を設けました。これでどうでしょうか?
- また、分かりやすさということでは、暫定的に実施してしまうという方法もあり、正直なところ、それがベストなんじゃないかという気もします。--mizusumashi(月間感謝賞を応援します) 2009年2月6日 (金) 13:55 (UTC)
- (図に番号をつけてみました)要は、図1.1や1.2のような表示が、この対策により図2のように改善されるということでよろしいでしょうか。あと上記対処の働きかけはシステムに対するもののように見受けられますが、各個の編集者(節リンク拡張の使用を推奨?)や閲覧者(ガジェットは個別設定が必要か?)がすべき作業があるのかないのかも明示していただければ良いかと思います。私もファイアフォックス利用者であり、この問題には以前から悩まされていたので、事態が改善する事には大変期待しています。--ととりん 2009年2月6日 (金) 11:09 (UTC)
- はい、本提案は、図1.1や1.2のような表示が、この対策により図2(図2.1と図2.2に変更しましたが)のように改善されるというものです。 #提案の概要節を新たに設けましたので、そちらもごらんになっていただければ、幸いです。
- また、たんに{{節リンク拡張}}を使用している場合も動作するということを示しているだけですので、{{節リンク拡張}}の使用を推奨するということはありません。
- 本提案を実施した場合、ガジェットを設定しなければならないということはなく、画像で示している変更結果はガジェットを設定しなくとも反映されます。ただ、本文が多くて重いページを閲覧した際に、JavaScriptによって節編集リンクが移動するまでに若干の時間がかかることがあります。この場合に、節編集リンクが移動前のところから移動後のところに再表示されるのが、「ジャンプ」しているように見ることがあります。これを抑制することを主に意図しているガジェットが二種類用意される、ということです。--mizusumashi(月間感謝賞を応援します) 2009年2月6日 (金) 13:55 (UTC)
- (図に番号をつけてみました)要は、図1.1や1.2のような表示が、この対策により図2のように改善されるということでよろしいでしょうか。あと上記対処の働きかけはシステムに対するもののように見受けられますが、各個の編集者(節リンク拡張の使用を推奨?)や閲覧者(ガジェットは個別設定が必要か?)がすべき作業があるのかないのかも明示していただければ良いかと思います。私もファイアフォックス利用者であり、この問題には以前から悩まされていたので、事態が改善する事には大変期待しています。--ととりん 2009年2月6日 (金) 11:09 (UTC)
- 基本的に賛成なのですが、単にフロートを解除するだけのほうのガジェットは要らないんじゃないでしょうか。JavaScript形式を無効にできるガジェットがあれば、「ぜんぜんわからーん」って人でも最悪解除はできますし、それ以外のスタイルにしたいのであれば調べてもらってユーザースタイルシートに入れればよいだけかと思います。まぁ、あって困るものではないのでどうしても入れたいということであれば入れてもいいとは思いますけど・・・。--青子守歌(会話/履歴) 2009年2月13日 (金) 08:38 (UTC)
- うーん… MediaWiki:Gadget-MoveEditsectionAntiJump.cssのほうですよね。私は、このシステムを導入すれば、自分はまず間違いなくこのガジェットを有効にするというくらい、このガジェットは有用だと思っています。
- おっしゃるように、ガジェットですし、あって困るものではないので、とりあえず暫定的に導入して、どういったように動くのか確認してみてから、必要であればもういちど話し合うということでいかがでしょうか。--mizusumashi(月間感謝賞を応援します) 2009年2月13日 (金) 09:04 (UTC)
- すいません。ソースをじっくり見ましたが、単にフロートを解除するだけではないようですね。私は大体動きが把握できましたが、分からない人も多いでしょうから、ガジェットを導入した場合の動作画像を一度つけていただければと思います。--青子守歌(会話/履歴) 2009年2月17日 (火) 09:05 (UTC)
- キャプチャ画像による詳しい説明をノートに制作いたしました。これで、いかがでしょうか。--mizusumashi(月間感謝賞を応援します) 2009年2月17日 (火) 15:59 (UTC)
- ありがとうございます。非常に分かりやすくなったかと思います。さて、MediaWiki:Gadget-MoveEditsectionAntiJump.cssのほうなのですが、ジャンプは抑制できるものの押し下げられてしまうみたいですね。まぁ、違和感はずいぶん減るのでいいかと思います。とりあえず私からは他に改善すべき箇所は見当たらないので、本提案に賛成とさせていただきます。--青子守歌(会話/履歴) 2009年2月17日 (火) 16:53 (UTC)
- キャプチャ画像による詳しい説明をノートに制作いたしました。これで、いかがでしょうか。--mizusumashi(月間感謝賞を応援します) 2009年2月17日 (火) 15:59 (UTC)
- すいません。ソースをじっくり見ましたが、単にフロートを解除するだけではないようですね。私は大体動きが把握できましたが、分からない人も多いでしょうから、ガジェットを導入した場合の動作画像を一度つけていただければと思います。--青子守歌(会話/履歴) 2009年2月17日 (火) 09:05 (UTC)
(話がずらしてしまい申し訳ないのですが{{coor title dms}}をfirefoxで使うとずれるのも同じ原因なのでしょうか・・・ex:いぬたま・ねこたま--S.Arai (talk) / Commons!! 2009年2月19日 (木) 23:06 (UTC))
- Firefoxで、JavaScriptが有効、既存のガジェット「ページ先頭のセクションに [編集] リンクを追加する」を有効化、かつ、ここで提案しているスクリプトとスタイルシートを設定している場合に、ページタイトルの下線が下にさがり、{{coor title dms}}の内容と重なってしまう、という現象を確認しました。ご指摘の問題は、これでしょうか? もし、別のことをおっしゃっているのでしたら、申し訳ありませんが、もう少し詳しくご説明いただければ幸いです。
- さて、前記の現象を調べてみたところ、これは、青子守歌さんが指摘された Gadget-MoveEditsectionAntiJump.css の問題(節編集リンクが出現した瞬間に、記述の一部が押し下げられる)と関係があり、両方を同時に(ほぼ)解決することができました。
- 新しいCSSを利用者:Mizusumashi/monobook.cssに用意しています。このCSSであれば、本提案内容(JavaScript方式による節編集リンクの対処)と既存ガジェット「ページ先頭のセクションに [編集] リンクを追加する」を有効化」とを併用しても、Windows XP + IE 7、Mozilla、Safari、Google Chromeでは、ページタイトルの下線と{{coor title dms}}が重なることはありませんでした。Operaでは重なってしまいますが、これはもともと重なっているようなので、Opera側または{{coor title dms}}側の問題としておくほうが良いかと思います。
- また、Gadget-MoveEditsectionAntiJump.css の問題のほうも、私の環境で、Windows XP + Mozilla、Safari、Operaでは、節編集リンクの出現にともなう記述の押し下げはなくなりました。IE 7では、節タイトルが二行にわたっている場合に少し動くようですが、そもそも節タイトルが二行にわたっているのが比較的稀なこと、移動もわずかなものであることから、許容範囲であるかと思います。--mizusumashi(月間感謝賞を応援します) 2009年2月21日 (土) 10:03 (UTC)
お知らせでの文章には提案の背景が示されているわけですが、平たく言うと上文を背景に節編集リンクの位置を変える提案ということでよいのでしょうか。閲覧者視点で見ればこの提案は当然の処置かと思いますが、編集者視点で見ると、なかには節編集リンクの位置が変わることそれ自体を嫌う人(編集者側の使い勝手)が出てくることも考えられるのでは・・・?影響の度合いに対してまた日本語版のコミュニティの意思/支持として呼ぶには、合意のバランスと合意の規模が少し小さいようにも感じます。--Tsukamoto 2009年2月24日 (火) 13:31 (UTC)
- ええと、「あと1週間まって異論がなければ、実施することにいたします」と下に書きましたが、Tsukamotoさんのご意見としては、同意が不十分であるので現時点での実施に反対、ということでしょうか。
- しかし、Wikipedia:井戸端で、Wikipedia:井戸端/subj/Firefoxでの閲覧時、節編集ボタン移動についての1月9日からだと1ヶ月以上ものあいだ話し合いを行い、このページだけでも2月5日から2週間以上の期間をかけ、Wikipedia:お知らせにも告知を行っています[1]。
- また、たしかに編集者の中には戸惑う方もいらっしゃるでしょうが、閲覧者の視点からは、場合によっては記事が読めなくなるという致命的な問題がある以上、とにかく何らかの対処を行うべきであると考えています。
- これ以上、どうすればよいのでしょうか?--mizusumashi(月間感謝賞を応援します) 2009年2月24日 (火) 14:01 (UTC)
- 案ずるより産むが何とやらで、「とりあえず変えてしまって文句が出たら話し合う」で良いのではないかと思います。井戸端で議論提起してもコメント依頼や井戸端告知を出しても人は全然集まらないですが、一旦変えてしまえば「一体これは何事だ」と人が集まってくるものです。今は亡きSpoilerHのときがそうでした。実際変えてからでないと、どのような影響が出るのか具体的には判りませんし(特にガジェット関連)。問題が起きたらそのときに戻せば良いです。
- 井戸端・井戸端告知でさんざん「意見を求む」と書いて結構時間が経ったのに、今更「合意が足りない」もない気がしますしね。「意見は持っているが議論に気付いていない人」は仕方ないにせよ、「気付いていて黙っている人」に遠慮する必要はありますまい。「気付いていない人」は、変えれば気付いてここに来るでしょう。--ラッキースター・キッド ◆Luck.w.AEQ 2009年2月24日 (火) 22:14 (UTC)
- 私も同じように思います。できるだけ早めの実施のためにも時期を今週末くらいに実施するのがいかがでしょうか。。?--S.Arai (talk) / Commons!! 2009年3月2日 (月) 13:28 (UTC)
- (当初、特に反対意見もでなさそうだったので、だまってこの修正を心待ちにしてたのですが)今週末まで待つ必要性すら感じないです。十分に時間と手間はかけられました(mizusumashiさん、まだ終わってませんがお疲れ様です)。すぐにでもやっちゃっていいんじゃないですか? --Blowback 2009年3月3日 (火) 17:24 (UTC)
- 私も同じように思います。できるだけ早めの実施のためにも時期を今週末くらいに実施するのがいかがでしょうか。。?--S.Arai (talk) / Commons!! 2009年3月2日 (月) 13:28 (UTC)
(インデント戻し)対処する方がOKなら、私はいつでも構いませんので^^--S.Arai (talk) / Commons!! 2009年3月4日 (水) 09:40 (UTC)
実施予定
[編集]では、あと1週間まって異論がなければ、実施することにいたします。--mizusumashi(月間感謝賞を応援します) 2009年2月18日 (水) 10:08 (UTC)
ひとまず、実施を保留しています。--mizusumashi(月間感謝賞を応援します) 2009年2月26日 (木) 13:11 (UTC)
Tsukamotoさんから、実施を妨げない趣旨のご連絡がありました[2]。ご事情があってのことなので、Tsukamotoさんとしては本意ではない可能性もありますが、他のかたからは実施の希望もあり、私自身もそれを希望していたので、実施いたしました。
なお、不具合や要望がある場合は、このページや私の会話ページでもしばらくの間は受け付けますが、長期的にはWikipedia:バグの報告をご利用いただければ幸いです。--mizusumashi(月間感謝賞を応援します) 2009年3月7日 (土) 03:33 (UTC)
- 対処実施ありがとうございました!--S.Arai (talk) / Commons!! 2009年3月7日 (土) 10:29 (UTC)
コメント mizusumashiさん、作業お疲れさまでした。また対処実施ありがとうございます。少なくともVista+IE7ではまったく問題なく動作しております。結果的ではありますが、節編集リンクが節タイトルの横に来たことで、レイアウト的にも以前よりも分かりやすくなったと思います。--Penn Station 2009年3月8日 (日) 05:19 (UTC)
コメント おそらくこの対処のせいかと思われますが、{{Documentation}}の「テンプレートの解説」にある編集リンクが左側に来るようになっています。これを他の編集リンクと同様に「テンプレートの解説」の右横に持っていくことはできないでしょうか?少なくともこの対処が行われる前までは他の編集リンクと同様に右寄せ表示されていたのですが…。--新幹線 2009年3月10日 (火) 08:15 (UTC)
- ご指摘ありがとうございます。
- ご指摘をうけて、「テンプレートの解説」にある編集リンクも右側に来るように対処し、複数のブラウザで動作確認をいたしました。ほとんどのブラウザでスーパーリロード(IEならキーボードのCtrlを押しながら再読み込み、他の多くのブラウザではShiftを押しながら再読み込み)が必要なようですので、スーパーリロードの上で、ご確認いただければ幸いです。--mizusumashi(月間感謝賞を応援します) 2009年3月10日 (火) 10:00 (UTC)
コメント 早速の対処ありがとうございました。少なくとも私の環境では正しく表示されているようです。--新幹線 2009年3月10日 (火) 14:31 (UTC)
2009年3月11日の編集について
[編集]先ほど(2009年3月11日 10:10 UTC ころ)、いくつかMediaWiki名前空間の編集を行いました。
上記のこれまでの編集(JavaScript方式の実施)によって、個人設定→編集画面→「セクション編集用リンクを有効にする」を無効にしたときに(デフォルトは有効)、セクション編集用リンク([編集]リンク)が消えないという現象があることが分かったので、それに対する対処です。目的と効果は単純ですが、作業したページが散らばっており、意図が分かりにくいと思うので、こちらで説明いたします。
従来の現象
[編集]まず、「セクション編集用リンクを有効にする」を無効にしたときにセクション編集用リンクが消えるメカニズムは、これを無効にしたときに、http://ja.wikipedia.org/w/index.php?title=-&action=raw&maxage=2678400&smaxage=0&ts=20090311101710&gen=css (以下、「gen css」)に「.editsection { display: none; }」が設定されるというものです(じつに単純な話)。
しかし、いままで、デフォルトで読みこまれ動作するMediaWiki:Common.js/MoveEditsection.jsはクラス指定の「editsection」を「editsection-moved」に書き換えていたため、gen css の設定の影響を受けませんでした。このため、「セクション編集用リンクを有効にする」を無効しても効果がない、という現象が起きていました。
対処の概要
[編集]次に、対処の概要の技術な説明です。gen css の動作をウィキペディア日本語版の管理者権限で変更することはできないため、対処としては、MediaWiki:Common.js/MoveEditsection.jsで移動された要素にも、editsection クラスを適用させる必要があります。そのため、MediaWiki:Common.js/MoveEditsection.jsを編集し、クラス指定を「editsection」を「editsection editsection-moved」に書き換えるようにしました。
しかし、これを行うと、ガジェット「[編集]リンクが、ページのロードが終わったあとに、セクションタイトルの左側から右側に移動するのではなく、右側に出現するようにする」を有効にした場合、移動前の[編集]リンクが消えるだけでなく、移動後の[編集]リンクも消えるため、このガジェットの目的が達成できないようになります。さらにこのことに対処するため、MediaWiki:Gadget-MoveEditsectionAntiJump.cssに「span.editsection-moved, span.editsection-expands-moved { display: inline; }」という設定を書き込みました。これは、spanクラスに限定することによって、editsection-movedとeditsection-expands-movedへの設定の優先順位をあげ、移動後については「display: inline」が優先されるようにするものです。
編集の内容
[編集]さらに、具体的な編集の説明を行います:
- MediaWiki:Common.js/MoveEditsection.js[3] - 前述のとおり、クラス指定を「editsection」から「editsection」を「editsection editsection-moved」に書き換えを行う。さらに、{{節リンク拡張}}にも「セクション編集用リンクを有効にする」の効果を及ぼすために、「editsection-expands」も「editsection editsection-expands-moved」に書き換える。
- MediaWiki:Gadget-MoveEditsectionAntiJump.css[4] - 前述のとおり。
- MediaWiki:Common.css[5] - editsection-moved クラスとeditsection-expand-moved クラスは、必ずeditsection クラスとともに適用されることになったので、セレクタの列挙を削除。
- MediaWiki:Gadgets-definition [6]- 削除したMediaWiki:Gadget-MoveEditsectionDisable.cssを除去。また、今回の変更とは直接関係はありませんが、[[[編集]リンク用ガジェット」節を設ける。
以下は、今回の変更とは直接関係はありませんが、同時に実行したものです:
- MediaWiki:Gadget-section-editsection-gadgets[7] - MediaWiki:Gadgets-definitionでの節分けへの対応。
- MediaWiki:Gadget-MoveEditsectionDisable.css[8] - gen css と競合して、必要以上に問題を複雑にしてしまうので、削除(存続しても機能したかもしれないけど)。
機能の競合について
[編集]最後にあげた競合の問題について、すこし補足します。
- 個人設定の「セクション編集用リンクを有効にする」を無効にすること
- ガジェット「[編集]リンクが、ページのロードが終わったあとに、セクションタイトルの左側から右側に移動するのではなく、右側に出現するようにする」を有効にすること
- ガジェット「[編集]リンクの移動を完全に無効にし、セクションタイトルの左側に表示されるようにする」を有効にすること
は競合します。
競合に対処する方法を考えてみましたが、競合に対処しようとするれば考えなければならない状況が3+1=4パターンから2^3=8パターンに増え、どうも複雑になり、保守性を損ないそうな気がします。また、これらは、そもそも機能の意図からして競合しており、これらを同時に選択すること自体が機能提供の意図から外れたものなので、同時に選択された場合にどうなれば「正しい動作」なのかさえ良く分かりません。
よって、これらは競合し、同時に選択すれば動作は未定義ということにしてしまいたいと思います。--mizusumashi(月間感謝賞を応援します) 2009年3月11日 (水) 11:32 (UTC)