亜細亜ノ蛾 - Weblog

[SiteSearch Google]

September 17, 2004

折りたたみメニューで Javascript が Off でも 追記部分を表示!!

[ad]

HINAGATA:HINAGATAでの折りたたみメニューOgawa::Memoranda: Javascriptでの表示・非表示切り替えを見て、自分も亜細亜ノ蛾 - ヘッドライン では追記部分を隠すようにしてみた。

しかしこれだと、Javascript を Off にしている場合、追記部分が表示されないので、以下のようにするといいな、と思った。

HINAGATAでのオリジナルソース (コー●とかカゴ●ではなく) はこのようになっている。

<MTEntryIfExtended>

<p class="extended">
<span onclick="toggleWithClass(this,'hidden','none')" onkeypress="toggleWithClass(this,'hidden','none')" title="Expand">▼</span>
&nbsp;
<a href="<$MTEntryPermalink$>#more" title="&quot;<$MTEntryTitle$>&quot;の続きを読む">&quot;<$MTEntryTitle$>&quot;の続きを読む</a>
</p>

<div id="more" class="hidden">
<$MTEntryMore$>
</div>
</MTEntryIfExtended>

これに、以下を追加してみる。


    (省略)
<div id="more" class="hidden">
<$MTEntryMore$>
</div>

<noscript><!--Javascript が Off の場合は、-->
<$MTEntryMore$><!--改めて MTEntryMore を表示する -->
</noscript><!--Javascript が On の場合、この内容は表示されない -->
</MTEntryIfExtended>

しかし、この場合は Javascript を On にしている環境では画面に表示されないが、ページのサイズは無駄に肥大している (MTEntryMore が二回読み込まれる)。効率が悪い。そこで、こうするとどうだろう ? (助言をいただき、さっそく修正しました。コメント参照)

<MTEntryIfExtended>

<p class="extended">
<span onclick="toggleWithClass(this,'hidden','none')" onkeypress="toggleWithClass(this,'hidden','none')" title="Expand">▼</span>
&nbsp;
<a href="<$MTEntryPermalink$>#more" title="&quot;<$MTEntryTitle$>&quot;の続きを読む">&quot;<$MTEntryTitle$>&quot;の続きを読む</a>
</p>

<script type="text/javascript">document.write('<div class="hidden">');</script>
<div id="more"><$MTEntryMore$></div>
<script type="text/javascript">document.write('</div>');</script>

要するに、Javascript が On の環境では document.write が働いて、<div id="more" class="hidden"> になる。

Javascript が Off の環境では <noscript> の内容が適用されるので、<div id="more"> になる。つまり hidden にならない。

<p class="extended"></p> も、Javascript で表示させてもイイかも。

上記は、もっといい方法を教えて頂いたので、修正しました。ありがとうございます!!


まぁ、自分の環境ではうまくいっているけど……います。

自分は、Javascript の事はほとんど知らなかった人なので、ここの内容を試す場合は “自己責任” ということでお願いします。ですが、kaminogoya さんと (o) さんのおかげで、シンプルで美しい物になりました。

ブログやっていて良かったなー、とつくづく思いました。これからも(なるべく)頑張って更新します。

Google Adsense

ワード

コメント

おお!グッジョブです!

しかし、
<script type="text/javascript">
document.write('<div id="more" class="hidden">');
</script>

の方がよいのでは?
scriptタグには、type属性が必要だし、language属性は別になくてもいいし、コメントアウトはしないで良いとおもいます!

しかし素敵!

divの対応が取れていないのでHTML的にいやな感じがします。以下のようにするとよりシンプルになると思いますよ。

<script>document.write('<div class="hidden">');</script>

<div id="more"><$MTEntryMore$></div>

<script>document.write('</div>');</script>

ああ、そうですよね。とほ。
自分は「document.write」の使い方すら知らないまま、調べながら書いたので……。
さっそく修正しました。
ありがとうございます!!

(o)さんの修正案に追加させていただくと、
scriptには文法上type="text/javascript"が必要ですよ〜!

ええ、もちろん簡単のために省略して書きました。本当のところを言うと、HTMLに内包されるJavascript内で<div>などと書くこともW3C的には正しくないです。
守る必要はないルールだと思いますけれど。

コメントを投稿

"折りたたみメニューで Javascript が Off でも 追記部分を表示!!" にコメントを投稿することができます(別ウィンドウが開きます)。

トラックバック

以下2件のトラックバックはこのページのエントリー"折りたたみメニューで Javascript が Off でも 追記部分を表示!!"を参照しています。

このエントリーのトラックバックURL:

» エントリーの折りたたみ

  • December 27, 2004 02:37 AM
  • from Nessun Dorma

HINAGATAさんのところで見かけた「エントリーの追記の折りたたみ」をやってみ... [続きを読む]

» Footnote Plugin と「続きを読む」とJavaScript

  • March 19, 2006 12:09 PM
  • from まけないこと投げ

FootnotePlugin と 「続きを読む」JavaScriptのONOFF対応 とを共存させる工夫をしてみた。 [続きを読む]

過去の記事

カテゴリィ一覧
  1. Movable Type
  2. その他
    1. アイデア
  3. ウェブ
    1. Weblog
    2. Webデザイン
    3. ちょっとイイ話
    4. へぇー(トリビア・雑学)
    5. オモロ
      1. オモロテキスト
      2. オモロニュース
      3. オモロ動画
      4. オモロ画像
    6. ニュース
  4. コンピュータ・エレクトロニクス
    1. PC
      1. Firefox
  5. マンガ・アニメ・ゲーム
    1. アニメ
      1. 新世紀エヴァンゲリオン
    2. オタク
    3. ゲーム
    4. マンガ
      1. 週刊少年ジャンプ
        1. DEATH NOTE
        2. HUNTER×HUNTER
        3. SKET DANCE
        4. バクマン。
  6. 本・音楽・映画・TV
    1. TV・芸能
    2. 映画
  7. 食・健康・生活
    1. ファッション
    2. 食べ物