富永日記帳

新着順表示|タイトル一覧|更新記事一覧|カテゴリ一覧

新着順表示

新着フィード

link要素やstyle要素のmedia属性をJavaScriptで変更する場合のIEの挙動

公開日時:2012年1月14日23時17分

HTML5に関してこんな記事が。

IE8以下はHTML5で登場した新要素を認識しないため、そのままでは新要素にスタイルを充てることができません。そのため、html5shiv (html5.js)(code.google.com)などJavaScriptを使う方法がありますが、スクリプトを無効にしているユーザーには意味がありません。

そこでIE8以下がMedia Queriesに対応していないことを利用して、あえて認識しないようなmedia属性を記述し、JavaScriptで改めて認識する形に書き換える手法が紹介されています。このようにすることで、スクリプトが有効な環境であれば、html5.jsなども読み込まれるのでHTML5の新要素が認識され、またスクリプト無効な場合はlink要素やstyle要素で指定したスタイルが一切適用されなくなります。

※style属性で個々に指定したスタイルは適用されますが。

中途半端にスタイルが適用されるくらいならいっそブラウザのデフォルトスタイルとユーザースタイルシートのみで、という方針の場合は導入を検討してもよいかもしれません。

ところが、実施に試してみると特定の場合においてうまくいかないことが分かりました。たとえば次のHTML。

<!DOCTYPE html>
<html lang="ja">
<head>
<title>style要素のmedia属性をJavaScriptで書き換えてみる</title>
<style media="all">
p {
  color: #00f; /* 文字色青 */
  background: #fff; /* 背景白 */
}
@media print {
  p {
    color: #f00; /* 文字色赤 */
  }
}
</style>
<script>
document.getElementsByTagName("style")[0].media = "all";
</script>
</head>
<body>
<p>この文字は何色になるでしょう?</p>
</body>
</html>

style要素にmedia属性が指定してあり、これをスクリプトで書き換えています。テストのため書き換え前後の値はどちらも"all"で、実用上の意味はありません。スタイルの中身はp要素の文字色を青にするものですが、印刷時(@media print)のみ赤色になるようにしています。

ほとんどのブラウザではスクリプトの有効・無効に関わらず、ディスプレイに表示される文字色は青になりますが、IE8以下でスクリプト有効な場合のみ、なぜか赤色になります。link要素で外部スタイルファイルを読み込む場合や、media属性の書き換えを setAttribute() で行った場合も同様の結果でした。

一方で、「@media print」を「@media screen」と変えて印刷を行うと青色になります。つまり、このおかしな挙動はディスプレイ表示時において、Media typesの指定が無視される事象に思えます。

こどもの国線と池上、多摩川線の車両から正面昇降ステップなどが撤去

公開日時:2012年1月3日11時55分

昨夏、こどもの国線でこんな事案が発生したようです。

8月8日の夕方、17:10の、こどもの国駅発、長津田行きの電車に中学生らしき

二人組みが電車の後部にしがみ付き電車を遅らせた不良がいます。

【奈良・緑山・岡上】こどもの国周辺地域Ver12(www4.machi.to) より

こどもの国線は1989年の7000系専用編成(7057F)導入時よりワンマン運転を行っていますが、さすがに運転士ひとりでは列車後部まで確認できないのか、こんなことが起こってしまうのですね。駅の張り紙によれば、その後は警備員を配置していたようですが、しばらく経って車両正面に変化が。

正面下部の大型ステップ部分に上辺が斜めになった青い具材が設置され、足が掛けにくくなっています。また、窓下の手摺りも撤去されてしまいました。

この対策は同じくワンマン運転を行っている池上、多摩川線にも波及しており、こちらは足掛け防止具材の設置はないものの、窓下手摺りなどとともに屋根に登るための昇降ステップも撤去されています。

昇降ステップは各車の妻面片側(上り方は山側、下り方は海側)に設置されているもので、新3000系以降は先頭車正面の設置が省略されています。先頭車も車種を問わず連結側にはステップがある*1ため、撤去の判断に至ったのでしょう。

※ただし、既に廃車された7915Fは例外で、連結部のステップはすべて撤去され、代わりにデハ7815の下り方に梯子が設置されていました*2。転落防止装置を設置していた影響と思われますが、この編成が健在だったらどのような処置をされたのでしょうね。

この撤去工事は、車両の"顔"に関わる目立つもののためか、多くのブログ等で話題になっていましたが、一部に気になる記述もありました。たとえば、次の記事。

別の7700系。ちなみにこちらはトップナンバーです。

(中略)

東急7701F 07ゥ 五反田行

こちらは車体裾の乗務員ステップまで撤去されている模様。

東急雪が谷検の車両 前面手すり・ステップ撤去 - 鉄分多めな日記(blog.goo.ne.jp) より

まず、一口にステップと言っても、さまざまな種類が存在します。7700系の場合、正面には以下の4つがあります。

  • 今回撤去された、妻面片側に縦に並んだ昇降ステップ
  • 昇降ステップに続く形で車体裾から下方へ延びるステップ (私は「足掛け」と呼んでいます)
  • 7700系化改造時に追設された下部の大型ステップ
  • 一部車両に残る7000系時代からの下部小型ステップ

「車体裾の乗務員ステップ」というと、ここで列挙したうち「足掛け」が該当しそうですが、前後の文章から察するに下部小型ステップのことを指しているのでしょう。しかしながら、デハ7701の小型ステップが撤去されたのは最近の話ではありません。MIHAさんの「東急目蒲線物語」サイト内で2000年7月に撮影された写真(www5a.biglobe.ne.jp)が掲載されていますが、この時点ですでに撤去されています。ワンマン化改造時にでも取り外されたのでしょうかね。

この小型ステップは、鉄道ピクトリアルNo.600(1994年12月臨時増刊号)の「東急7700系形態解析」でも触れられているとおり、東急車輛製造で改造された車両のうちデハ7712以外で残されたものですが、その後デハ7701のほかデハ7713~7714、クハ7910(山側のみ), 7913~7914が撤去されています。また、種車が旧7000系1次車なデハ7710、クハ7910はステップ位置が中寄りですが、デハ7710の山側(車掌台側)はなぜか他車と同じ位置に移設されていたりします。

念のため、小型ステップの残る9両*3について再確認を行いましたが、状況は昇降ステップ撤去前と変わっていませんでした。

※なお、私がTwitterで指摘した(twitter.com)ためか、「こちらは車体裾の乗務員ステップまで撤去されている模様。」の記述は後に削除されています。

  • *1東横時代にIRが設置されていたデハ1312のみステップの代わりに梯子となっています。
  • *2実は最下部のひとつのみステップが残っていましたが。
  • *3デハ7702~7703, 7705~7707, 7710、クハ7907, 7910, 7912

豊橋鉄道ク2808に軌条塗油器復活

公開日時:2012年1月2日12時44分

豊橋鉄道渥美線のク2800形のうち、ク2804とク2805以外はパイオニアⅢ台車(TS-708形)を履いていましたが、2006年から2008年にかけて台車更新が行われ、ペデスタル式のTS-800系に統一されています。

このとき、塗油器を搭載していたク2808は交換後の台車に油噴口が設置されず、搭載車はク2801に変更されました。また、上田電鉄から譲渡されたク2810(上田クハ7551)も塗油器設置車でしたが、入線にあたり台車が交換されて非搭載となっています。

※なお、ク2801は室内床面に塗油器点検蓋がありません。

ところが、先日訪れた際にふとク2808の台車を見ると、油噴口が追設されていることに気付きました。注目したいのは設置位置で、ク2801が連結面側台車に設けられているのに対し、なぜか運転台側台車への設置となっています。配管などを再利用した関係でしょうか。

この車両は渥美線で最後までP-Ⅲ台車で残っており、交換は2008年の春~夏あたりだったと推測されるので、およそ3年半ぶりに復活ということになります。なお、塗油器本体は確認していないので、旧品を再利用したのか新品を取り付けたのかは分かりません。

東急池上線、多摩川線1000系の行先字幕(方向幕)

公開日時:2012年1月2日11時37分

東急電鉄の車両は1990年代前半より種別、行先表示のLED化が進んでいますが、LED化が行われなかった車両も機器の更新(SPC化)やフィルム交換が進み、2008年には大井町線の8000系、8090系に残っていたブリッジ式(B式)が消滅するなど世代交代が進んでいます。

そんな中、池上、多摩川線所属の1000系は旧来の日本語表記のみの側面字幕装備車が残っていますが、その収録内容は少なくとも2種類が存在します。一部の車両は東横線車両から流用してきたと思われるフィルムを装備しており、五反田駅での折り返し時などに特急表記を見ることができますが、通常使用されている29コマ目以降はこんな感じになっています。

  • 29: 多摩川
  • 30: 蒲田
  • 31: 雪が谷大塚
  • 32: 五反田
  • 33: 特急 渋谷
  • 34: 特急 桜木町
  • 35: 特急 元住吉
  • 36: 特急 菊名
  • 37: [空欄](白幕)
  • 38: 試運転
  • 39: 回送
  • 40: 臨時

※なお、特急なしバージョンは#33~#37がすべて空欄です。

この特急幕装備状況を6年前に調査しており、2006年時点では次の22か所に使われていました。

  • クハ1013: 海山とも
  • クハ1022: 海山とも
  • デハ1212: 山側のみ
  • デハ1213: 海山とも
  • デハ1217: 海山とも
  • デハ1220: 海山とも
  • デハ1222: 海山とも
  • デハ1223: 海山とも
  • デハ1224: 海側のみ
  • デハ1312: 海山とも
  • デハ1313: 海側のみ
  • デハ1317: 海山とも
  • デハ1324: 山側のみ

その後、2008年にはクハ1013, 1017, 1023、デハ1312, 1317, 1323の正面行先幕が交換され、英文表記がすべて大文字(upper case)となり、このうち1023Fのみは中間車デハ1223も含めて側面字幕も英文併記タイプとなりました(特急幕はなく#33~#37は空欄)。

※余談ですが、この頃クハ1012、デハ1313の正面行先幕も交換され、「回送」の英文が「Dead head」から「Not in service」に変わりました。この2両が東急で最後の「Dead head」装備車だったと思います。

その後、新幕への更新が進んだという話は聞いていませんが、日本語幕同士での交換はされているかもしれません。現状はどうなっているのでしょうね。

CSS3 Media Queries と Media types 併用時の Opera Mini 向け注意点

公開日時:2011年12月7日21時44分

ウェブはPCやゲーム機、携帯電話といったディスプレイサイズの違いのほか、印刷、音声読み上げなどさまざまな出力媒体が存在しますが、CSS2ではMedia types(メディア型)(www.w3.org)によってコンピュータ画面用の「screen」、印刷用の「print」など、10のメディア型(すべての環境に適用される all を含む)が規定され、モバイルや印刷時は別のスタイルを適用するといったことが可能になっています。

CSS3では、これを拡張したMedia Queries(メディアクエリー)(www.w3.org)があり、メディア型に加えて解像度などさらに詳細な条件を設定することができます。

たとえば、右側にfloatさせたサイドバーを、スマートフォンのような小さい画面(幅480px以下を想定)で解除するスタイルにしたい場合は次のように書くことができます。

@media screen and (max-width:480px) {
  div.sidebar {
    width: auto;
    float: none;
  }
}

しかし、メディア型のみの指定と併用すると、Opera Mini(jp.opera.com)で意図したスタイルにならないことがあるようです。

メディア指定無しを含めた3種類の指定を行った例で説明します。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta name="viewport" content="width=device-width"/>
<title>メディア型とメディアクエリー併用テスト</title>
<style>
p {
  color: #00f; /* 文字色青 */
  background: #fff; /* 背景白 */
}
@media handheld {
  p {
    color: #060; /* 文字色緑 */
  }
}
@media screen and (max-width:480px) {
  p {
    color: #f00; /* 文字色赤 */
  }
}
</style>
</head>
<body>
<p>この文字は何色になるでしょう?</p>
</body>
</html>

これをPC用ブラウザ(表示幅480px以上)で表示させると、p要素の文字色は青になります。handheld や max-width:480px の指定は適用されないので当然ですね。

また、スマートフォンを使ってOpera MobileやAndroid版Firefoxなどで表示させると赤になります。

※ちなみに、これらはhandheld型の指定を無視するので、handheld と max-width:480px の記述順序を逆にしても赤のままです。

一方、Opera Miniはscreen型とhandheld型の両方が適用されるので、後に指定した赤になるかと思いきや、なぜか緑になってしまうのです。handheldの記述を削除すると赤になるので、メディアクエリーの記述が単に無視されるという訳ではなく、メディア型とメディアクエリーを併用した場合の不具合かと思われます。

ガラケー向けにhandheldの記述を残しつつ、スマートフォン対応としてメディアクエリーを追加するような場合は、標準ブラウザだけでなくOpera Miniでの表示に問題ないかチェックした方がよいかもしれません。