0

JQueryアコーディオンコードを使用して、次のことを達成しようとしています:

  • ページのロード中に、アコーディオン内に隠されたコンテンツが表示されないようにします (つまり、短時間点滅します)。ユーザーがアコーディオンを展開した場合にのみこのコンテンツを表示したいのですが、一部のブラウザーでは、ページの読み込み中にこのコンテンツを表示できます。
  • ユーザーが Javascript を無効にしている場合、アコーディオンの H1 タブ (Accordion Test など) を表示しますが、その下に隠されたコンテンツは表示されません。

例を挙げると、これは私がエミュレートしようとしている種類のものです。

http://www.outdoorgb.com/c/inflatable_boats_kayaks/

[Read More] ボタンをクリックしてみてください。詳細情報が表示されます。ここで、Javascript を無効にしてみてください。ボタンをクリックしても何も起こらず、詳細情報が表示されないことに注意してください。これに対して、Google がそのコンテンツなどをクロールしない可能性があるため、これが発生するのは良いことではないと言うかもしれません。ただし、Lynx を介してこの URL を実行すると、コンテンツが正常に読み取られるように見えます。これが問題になると思う人はいますか?

とにかく、これは上記のポイントを満たすために適応しようとしているコードです。

 <!doctype html>

<html lang="en">

<head>

  <meta charset="utf-8" />
  <title>Accordion Test</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
  <script src="http://code.jquery.com/jquery-1.8.3.js"></script>
  <script src="http://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>
  <link rel="stylesheet" href="http://www.jqueryui.com/resources/demos/style.css" />

  <script>
  $(function() {
    $( "#accordion" ).accordion({
      collapsible: true,
      active: false,
      heightStyle: "content"
    });
  });
  </script>

</head>

<body>

<div id="accordion">
  <h1>Accordion Test</h1>
  <div>
  <p>Mauris mauris ante, blandit et, ultrices a, suscipit eget. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. 

Donec suscipit eros. Nam mi. Proin viverra leo ut odio.</p>
  </div>
</div>

</body>
</html>

そこにいるあなたの専門家が提供できる助けがあれば、感謝します。

よろしくお願いします

ジョン

==============================================

アップデート

==============================================

Pete の助けのおかげで、私はこれらの問題の最初の部分を解決しました。JavaScriptが無効になっている場合にコンテンツを非表示にする方法を知っている人はいますか? 現在のコードは次のようになります。

<!doctype html>

<html lang="en">

<head>

  <meta charset="utf-8" />
  <title>Accordion Test</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
  <script src="http://code.jquery.com/jquery-1.8.3.js"></script>
  <script src="http://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>
  <link rel="stylesheet" href="http://www.jqueryui.com/resources/demos/style.css" />

 <script>

$(document).ready(function() {
    $( "#accordion" ).accordion({
      collapsible: true,
      active: false,
      heightStyle: "content"
    });
    $('#hideAccordion').show();
  });

  </script>


</head>

<body>

<script language="text/javascript"> document.write('<div id="hideAccordion" style="display:none">'); </script>

<div id="accordion">
  <h1>Accordion Test</h1>
  <div>
  <p>Mauris mauris ante, blandit et, ultrices a, suscipit eget. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. 

Donec suscipit eros. Nam mi. Proin viverra leo ut odio.</p>
  </div>
</div>

<script language="text/javascript"> document.write('</div>'); </script>

</body>
</html>
4

3 に答える 3

1

コンテンツが 100% ユーザーに表示されていなくても (アコーディオンやロールオーバー ツールチップなど)、ページの読み込み時にコンテンツが DOM に含まれている場合、Google はそのコンテンツをクロールします。

テキストはページを使用するのに重要ではないため、Javascript が有効になっていない場合、「続きを読む」テキストが利用できないことに問題はありません。無効化された JS が原因で問題が発生したという報告を、クライアントから 1 つも聞いたことがありません。

以下は、無効化された JS ブラウジングに関する有用な資料ですJavaScript が無効化された場合のブラウザ統計

JS の無効化がユーザー グループにとって本当に懸念事項である場合、別のオプションとして CSS を使用して、次のような方法でアコーディオンを処理します http://www.hongkiat.com/blog/css-content-accordion/

于 2013-01-31T14:33:46.143 に答える
1

次のようなものを試すことができます

<script language="text/javascript"> document.write('<div id="hideAccordion" style="display:none">'); </script>

<div id="accordion">
  <h1>Accordion Test</h1>
  <div>
  <p>Mauris mauris ante, blandit et, ultrices a, suscipit eget. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio.</p>
  </div>
</div>

<script language="text/javascript"> document.write('</div>'); </script>

そして、ドキュメントの準備ができたら$('#hideAccordion').show()、アコーディオンがロードされた後に呼び出される関数がある場合は、これを呼び出します

何かのようなもの

 $(document).ready(function() {
    $( "#accordion" ).accordion({
      collapsible: true,
      active: false,
      heightStyle: "content"
    });
    $('#hideAccordion').show();
  });

編集

申し訳ありませんが、あなたの質問をもう一度読みました.javascriptが無効になっているときにコンテンツを表示することに煩わされていないので、スタイルシートで次のスタイルを使用するだけです:

#accordion div {display:none;}

アコーディオンが読み込まれると、ページの読み込み中にコンテンツが表示されることなく、通常どおりに機能するはずです。これについて私が指摘したいのは、それはあまりアクセスしにくいということですが、それは w3c 標準へのコーディングに煩わ​​されているかどうかにかかっているだけであり、一部の検索エンジンは大きなテキスト ブロックをdisplay:none探します。このように多くのテキストが隠されています

于 2013-01-31T14:35:14.997 に答える
0

あなたが提供する例は、クラスを切り替えるだけです。コンテンツは実際にはずっとそこにあります (.side の中を見ると、.readmore_con が見つかります)。

.readmore_con は単に設定されています

display: none;

[続きを読む] ボタンをクリックすると、.readmore_open クラスが .readmore_con div に追加されます。.readmore_open の CSS は? ...ご想像のとおり:

display: block;

この切り替えに本当にアコーディオンを使用したい場合は、表示の初期状態を定義するだけです。「その他」のコンテンツに移動し、アコーディオンの .activate イベント中にそれを切り替えます: http://api.jqueryui.com/accordion/#event-activate

于 2013-01-31T14:36:59.530 に答える