/ 最近 .rdf 追記 設定 本棚

log[HTML: 2008-10-24]



20081024() [HTML] Logicoolのサトはキーボドでもタブの切り替えができて偉い(スクリトをOFFにするとマウスを使ってさえ表示を切り替えられなくなったが…)

[HTML][javascript] 補助に徹する賢い JavaScriptの使い方

基本はこう

  1. HTMLのみで情報を配置する
  2. CSSで見栄えを整える
  3. スクリトで効果やアクションを付け加える

Logicoolのサトのタブコトロールはキーボドインターフェイスを具えていて偉いと書いたばかりだが、スクリトがオフだとタブの切り替えができないばかりかタブの中身、肝心の情報が表示されないのはイクナイ

スクリトで各タブの表示・非表示を切り替えているのだろうが

  • タブの状態のデフトは非表示
  • スクリトで一つだけを表示に切り替え

ではなく

  • タブの中身はデフトで表示
  • スクリトで一つ以外を非表示に切り替え

より良いやり方ではない(一瞬全ての情報が表示されてすぐに消えるというのは気にすることではないと思ってい)

ロジのサトのこのスクリトは見栄えをいじるだけなのでHTMLとスクリトを切り離して最初に HTMLのみでページを作りスクリトは後からアタッチするものだと考えて欲しかった

スクリトに依存する要素があって切り離せない場合はAmazon.co.jpがやっているように

  • <noscript>の中にスクリトを使わない代替 HTMLを用意する (できなければないで仕方がな)
  • <script>の中でスクリトを必要とする要素をスクリトを使って配置する

方法が賢いと思っている

 っとだけ関連


20070207()

[Firefox][HTML] font-family:fantasyfont-family:cursive でどせいさんフ

驚いたFirefoxでブラウズ中に普通のサトでどせいさんフトが表示されたから

そのサトは font-familyとして fantasyを指定していた自分はどせいさんフトをイールしていたでも Firefoxfantasycursiveなフトとして どせいさん を選んだ理由がわからぬそんな設定項目があっただろう(トにそういうメタデータが含まれているのだろうプロポーショナルか等幅かをプログラムが見分けられる(はず)のだから不思議はない)


20070117()

[IE7][Hiki][HTML] IE7でマウスがおかしい

http://vvvvvv.sakura.ne.jp/ds14050/w/

Internet Explorer 7 で上の Hikiージを表示すると右上のメニーを除いてテキトを選択することもリンクをクリックすることもできないーボドでの操作はできる

スクリトは仕込んでない外部スタイルシトは hiki_base.csspain.cssが読み込まれている <style>タグが一カ所使われているHTMLAnothoer HTML-lintでチックして対応がとれてないタグは存在しなかった

(ージのどこでも)ダブルクリックするとまるで見当外れのページ右下の Generated が選択されるからスタイルシトの float辺りがくさい

pain.cssをみてみると

div.main {
  float:right;
  width: 78%;
}

div.sidebar {
  float:left;
  width: 20%;
(以下略)

という記述がありドバーの表示を floatで実現していた

臭う臭うぞでもここまでそのうち直るでし


20060713()

[HTML] <a href="javascript:void(0)"> と自分で書いて初めて気付くその便利さ

onclickでごにょごにょする HTML要素があってそいつに Tabーでフーカスをあてたいなと思ったときに最初に思いついたのが

<a href="javascript:void(0)">ほげほげ</a>*

のように Aタグで囲う方法遅まきながらこの時初めてステータスバーに javascript:void(0)と表示される何もしないリンクの存在意義に気付いたこいつがあると TabーでフーカスをあてられるしEnterーでクリックすることもできるそしてスクリ(onclickドラ)で処理できる簡単かつ使える範囲の広い方法javascriptを切ってるブラウザではそもそも onclickドラが動かないから javascriptスキーマを使うことの是非は問われないしonclickドラでキーボドとマウスをまとめて処理できることや対応するブラウザの多さなど書けば書くほどこれしかないって思えてくる

次に考えついたのが、9"tabindexはフーカスの順番を決めるだけのものではないのだな" と書いたようにIE(>=5.0)Firefox1.5tabindexを付けることでリンクやフームの部品以外の要素をフーカス可能にする方法

IEの場合

<element>.tabIndex = 0 // 0 => フォーカス可能にはするが、タブオーダーは指定しない
<element>.onkeypress = function(){ if(event.keyCode == 13) this.click() } // Enter->Click

で済むがFirefoxの場合 click()が実装されてるエレメトがフームの部品などに限られているので

<element>.tabIndex = 0 // 同上
<element>.onkeypress = function(event){
  if(event.keyCode == 13) {
    var event2 = document.createEvent("MouseEvents");
    event2.initMouseEvent("click", true, true, event.view, event.detail, event.screenX, event.screenY, event.clientX, event.clientY, event.ctrlKey, event.altKey, event.shiftKey, event.metaKey, 0, null);
    this.dispatchEvent(event2);
  }
}

かなり冗長

* href="" だとそのページ自身へ移動(=リロ)してしまうvoid(0)以外に href="#" を使う流派もある様子(でもイマイチ)


20060407()

[Amazon][HTML]アマゾンのおすすめページがリニーアルしてる

15アイムずつ表示するのは一緒だけど……

 ○ 情報量が増えてる

以前「おすすめの理由はっていうリンクがあるだけだったのに「〜などを評価されたお客様におすすめしますって最初から一冊だけだけどおすすめの理由が表示されてるこれはページの移動が減るなあ

出版日も表示されてる

 ○ その場で(ージ遷移無しで)評価が変更できるでも Ajaxゃない*

マウスオーバーに合わせ「嫌い()「好きではない(☆☆)「普通(☆☆☆)「好き(☆☆☆☆)「大好き(☆☆☆☆☆)と表示されクリックすると評価が送信されるージ遷移はない

「持っています「興味がありませんも従来はハイパーリンクだったものがージ遷移無しでアマゾンに送信されるようになっている

ースを覗いてみるとJavascriptが使用可能なら

window.location.href="〜"

とやってるこれは普通ページを移動するときに使うけどそうはならないからくりは以下のスポ(: id と名の付くものをそのまま載せるのはまずいかもしれないので正規表現に置換してあ)

HTTP/1.x 204 NoContent
Date: Thu, 06 Apr 2006 18:42:18 GMT
Server: Server
x-amz-id-1: [0-9A-Z]{20}
x-amz-id-2: [0-9A-Za-z/=]{44}
Vary: Accept-Encoding,User-Agent
Content-Encoding: gzip
Connection: close
Content-Type: text/html; charset=Shift_JIS

Firefox204 NoContent を受け取ったものだから新しいページを表示できなくて古いページを表示し続けるというわ

Javascriptが使用不可ならフームを使って(確認してないけど)スクリトと同じ内容を POSTしてるスポスも同じ 204 NoContentだろう

  「次のページ「前のページの他に現在のページを再表示するリンクが追加

評価などを変更しましたか? ここをクリックするとおすすめ商品の情報が更新されます。

というのがページ下部にある内容は単なる javascript:location.reload() だけど需要のあるリンクだと思う表示中のページに加えた評価 を加味した最新のおすすめを表示したいと思うもの

ーボド派は F5を押せばいいと言うでしょうがキーボド派はお呼びでない様子

 × 「持っています「興味がありませんにはフーカスが移らないのでキーボドで操作できない

「興味がありませんを例にとるとソースはこう↓丸々スクリトで中身を出力してる(スクリOFFなブラウザには <noscript><form></form></noscript>が用意してあるので重複して表示しないように)

<td style="white-space: nowrap;">
	<script language="Javascript" type="text/javascript">amz_js_showNotInterested(asin, notInterested);</script>
</td>

amz_js_showNotInterested()が何を返すかというと

function amz_js_showNotInterested(asin, notInterested){
    var imageID = "notInterested." + asin;
    document.write("<img src="+'"'+ + checkboxImages[notInterested] + +'"'+"");
    document.write("onclick="+'"'+"amz_js_sendNotInterested('" + asin + "', 'alt');"+'"'+" ");
    document.write("onmouseover="+'"'+"amz_js_notInterestedMouseOver('" + asin + "', 'alt');"+'"'+" ");
    document.write("onmouseout="+'"'+"amz_js_notInterestedMouseOut('" + asin + "', 'alt');"+'"'+" ");
    document.write("id="+'"'+ + imageID + +'"'+" ");
    document.write("border="+'"'+"0"+'"'+" valign="+'"'+"bottom"+'"'+" />");
}

一つの <img>要素リンクでないただの画像にフーカスは移りません

というわけでスクリトが OFFの場合はフームと画像ボタンが表示されるのでキーボドで操作できるはずだがスクリONの場合はマウス必須

 × ☆の評価もキーボドでできない

☆の部分のソースを見ると☆の画像は一つで6つの<area>を持つ<map>を適用することで個々の☆のマウスオーバー効果やクリックの処理をしている評価送信トリガはハイパーリンクを使ったものではなく <area onClick="〜" />だから☆にフーカスは移るんだけど Enterを押しても反応しないクリックをエミュレトするキーボドシトカトがあれば何とかなる

因みに ☆評価に対応した <noscript> なフームは用意されてないのでスクリトオフでは☆自体が表示されないはず。

 × <html>が二つ?それってあり?

改行とインデトをいじって HTML要素の内容を省略したソースが以下

<html>
  <head>
    <title>Amazon.co.jp: おすすめ商品</title>
    <script language="Javascript1.1" type="text/javascript"></script>
    <style type="text/css"></style>
    <style type="text/css"></style>
    <style type="text/css"></style>
  </head>
  <body>
    <html>
      <head>
        <title></title>
        <style type="text/css"></style>
        <script language="Javascript1.1" type="text/javascript"></script>
      </head>
      <body bgcolor="#FFFFFF" link="#003399" alink="#FF9933" vlink="#996633" text="#000000">
……
      </body>
    </html>
  </body>
</html>
  • Content-Typeッダは text/html
  • doctype宣言はない
  • <meta>タグもない
  • <img />, <br />など中身のない要素に XHTML風の記法
  • だけど <input><input />でなく <input>
  • 対応する閉じタグのない <li>, <p>, <option>もある
  • <b>といった物理要素もある

よくわからない HTMLところどころ XHTML風味何れにしろ Broken みたいな

アマゾンみたいなサトでは HTMLの理念理想よりブラウザ互換性の方が大事でしょうが見映えと関係ない細かな部分ではソースの統一をして欲しいな(<br />なんて <br>でいいでし)

 ○ おすすめ表示件数の上限が無くなった?

これまでは 100件ちっと「次のページが無くなって打ち止めになったけど現在 400件目を過ぎたところまで表示してるここまでくるとおすすめの精度が悪くて参考にならないでも自分で止めるところを決められるのは良い

* AjaxXmlHttpRequest, MSXMLオブジトを利用したージ遷移を伴わないサーバーとの通信(HTTP GET/POST)(とそれによるページ更新)とするなら


20060116()

[HTML]classってスペースで区切って複数設定できるのね (HTML4.01)

(´・ω・`) 知らなんだ

http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/struct/global.html#h-7.5.2

class = cdata-list [CS]

この属性はある要素に1つのクラス名を割り当てるかまたは複数のクラス名を設定する幾つの要素に対してでも同じクラス名あるいはクラス名群が割り当てできる複数のクラス名については空白文字によって区切らねばならない