このページは、JavaScript+PHPで作っている「ホームページについての日記」をHTML版に直したページです。
GoogleやYahooなどの検索エンジンに拾われてもかまわない内容だけを書いてます。検索エンジンに拾われたく内容は書いてません。
最新のページはあるていど項目別にわかれてます。
function CDM_Module() { function CDM_Send(CDMdata) { var iframenode = ElementObject.Tag("iframe"); for (ifrcnt=0; ifrcnt<iframenode.length; ifrcnt ){ if(lastIndex(iframenode[ifrcnt],CDMdata.AttrVal,CDMdata.AttrName)) { var iframe = window.frames[ifrcnt]; iframe.postMessage(CDMdata.DATA, CDMdata.URL); } } } CDM_Module.prototype.Send = CDM_Send; function CDM_Send_Check(evt_obj) { var CDMessageCK = new Object(); CDMessageCK.origin = evt_obj.origin; CDMessageCK.data = evt_obj.data; if(lastIndex(CDMessageCK.data,'Receive Data')) { CDMessageCK.Check = true; } else { CDMessageCK.Check = false; } return CDMessageCK; } CDM_Module.prototype.SendCheck = CDM_Send_Check; function CDM_Receive(evt_obj) { var CDMessage = new Object(); CDMessage.origin = evt_obj.origin; CDMessage.data = evt_obj.data; if (!CDMessage.origin) { CDMessage.Check = false; } else { CDMessage.Check = true; } return CDMessage; } CDM_Module.prototype.Receive = CDM_Receive; function CDM_Receive_Check(evt_obj, RS_Data) { if (!evt_obj.data) { evt_obj.source.postMessage("No Data", evt_obj.origin); } else { var RSM_Data = "Receive Data," RS_Data; evt_obj.source.postMessage(RSM_Data, evt_obj.origin); } } CDM_Module.prototype.ReceiveCheck = CDM_Receive_Check; } CDM_Module.prototype = new CDM_Module();
function __autoload($className) { $directory = array('a', 'b', 'c', 'd'); $ChangeName = array('class名' => 'PHPファイル名', 'class名' => 'PHPファイル名'); while(list ($key, $val) = each($ChangeName)) { if (ereg($key, $className)) { $className = $val; break; } } $iRowCount = count($directory); for($icnt = 0; $icnt < $iRowCount; $icnt ){ $IncFileName = '../' .$directory[$icnt]. '/'.$className.'.php'; if (file_exists($IncFileName)) { include_once($IncFileName); break; } } }
__autoload
に引数として渡される。extendsしているClassは名前をextends元に直さないといけない。$ChangeName
を使い、連想配列で変換するようにする。$directory
に必要な名前を格納して、ファイルがあればインクルードするようにする。document.implementation.createDocument
で、xmlファイルをload出来ないのが問題だった。document.implementation.createDocument
を使わなければ出来るはずである。function xml_XSLTProcessor(xmlhttp,xslt_url,xslt_sub){ var xmlDoc = xmlhttp.responseXML; try { var xslt = new XSLTProcessor(); var xslthttp = new window.XMLHttpRequest(); xslthttp.open("GET",xslt_url,false); xslthttp.send(null); var xsltDoc = xslthttp.responseXML; xslt.importStylesheet(xsltDoc); // XMLをXSLTでDOM変換 var doc = xslt.transformToFragment(xmlDoc, document); if (!doc) { alert("代替XSLT"); var subxslt = new XSLTProcessor(); var subxslthttp = new window.XMLHttpRequest(); subxslthttp.open("GET",xslt_sub,false); subxslthttp.send(null); var subxsltDoc = subxslthttp.responseXML; subxslt.importStylesheet(subxsltDoc); var doc = subxslt.transformToFragment(xmlDoc, document); } return doc; } catch (e) { try { xslt = new ActiveXObject("MSXML.DOMDocument"); xslt.async = false; xslt.load(xslt_url); var doc = xmlDoc.transformNode(xslt); return doc; } catch (e2) { var doc = ""; alert("XSLTが動くブラウザでどうぞ"); return doc; } } }
importStylesheet
できなくなるというバグがある。致命的なバグです。XSLTをモジュールみたいに管理していたのだが、それが出来ない。捕まえ方のXML文書にあります。私のメインに使っているラインは4ポンドナイロン+8ポンドフロロなので、そこにヒットしたと思われます。
「8ポンド ライン フロロ」は、防波堤や河口のチョイ投げで万能な仕掛けができあがります。
「扁平な頭」といえばマゴチのことです。
「頭部が白い」という意味。マガン」の学名。
動物の習性・形体のXML文書を検索していますが、該当する生物は存在しません。
ソイ+ナマズで検索されていると思われます。
ホオジロのフランス語は分かりません。シラサギの「フランス語」と「ホオジロ」を検索していると思います。
動物の習性・形体のXML文書を検索していますが、「タモロコ」とオオハクチョウの「あまりカロリーが高い食べ物を与えると太って飛べなくなるから、決まった餌を与えてくださいと注意される場合がある。」で検索されている。
飼育下で他の生物が捕食した場合のカロリーなのか、自分で食べた場合のカロリーなのかは不明。
まぁ、どちらにしても「的外れ」な答えしかでてこないはず。
ウナギの毒です。ちゃんと検索されてます。
自分の環境ではおかしいと訴えたくなるような現象はありません。WebKit-SafariでXSLTですが。
そんなことより、「Namoroka」を常用してChromeの情報を拾う人のほうがになる。
offset-leftとoffset-topを取得してください。目的の要素の表示位置を求めるoffset~あたりで書いてあります。
基本的に、どのブラウザでも同じように取得できてます。
createElement(タグ名)で作成したDOMをappendChildはできますが、XMLHTTPRequest等で中身がちゃんと作ってあるDOMオブジェクトをappendChildすると失敗します。
そんな時はinnerHTMLを使います。appendChildは追記なのですが、innerHTMLは上書きですので注意が必要です。
PHP 5は「xsltprocessor()」を、configureに引数 「with-xsl[=DIR]」 を追加するだけで使えるそうです。
XMLを変換するPHP-Classでサンプルはあるのでそっちを見てください。
そんなことより、トヨタ自動車株式会社がIE6を使っていることに驚いた。企業がIE8を使うのはいったいいつなのでしょう。
ホームページの文字数とは、なんのことを指すのか分らない。titleならば、短くインパクトがあるようにするし、要約ならそれなりの長さが必要だし。
コンテンツの横の文字数。で横の文字数を調べてみたことがある。 どうも、あまり長いと読みにくくなるものらしい。
ブラウザに限らず考えたほうがよいと思う。
「メニューをリスト要素でマークアップして、floatで段組」、までは理解できるのですが「一枚絵」がわからない。
普通に「一枚絵」を使いメニューを作るなら、img要素とmap要素,area要素,a要素でマークアップするのが本筋です。その他では、SVGにJavaScriptでメニューを作る。FLASHで作る。などあります。
「一枚絵」が「イラストレイターなどで部品を作って組み立て直す。」ことを指すのであれば、HTMLの話ではなくCSSの話です。floatだけでは上手くいかないので、margin,border,paddingなどの指定が必要です。
CSS3では、boxレイアウトができたりします。CSS2.1以上に専門的になります。今のうちから使ってみることをお勧めします。
イワシの料理がboxレイアウトです。
XMLのリンク言語がXLinkになります。従って、SVGに限らずXMLでリンクをするための言語です。最新のOperaでも使えます。
XLinkについては、拡張されたXMLのリンク言語:XLinkで詳しく説明してます。
それでは、「SVGのXLinkはどうなっているのか?」と疑問を持ちます。DTDを見ればわかります。%XLINK.pfx;type ( simple ) #FIXED 'simple'
となっているのでsimpleしか使えません。
XLink:typeがsimpleなら、属性はhref,role,arcrole,title,show,actuate がoptionで使えます。
SVGのXLinkについては、Document Structure - SVG 1.1 - 20030114にあるので参考にしてください。
XLinkの実装は、ソフトによって違います。自分で確かめてみましょう。XMLデータによる図鑑で使っていいます。
xslt = new ActiveXObject("Microsoft.XMLDOM");
では、IE8は動いてます。
XMLHttpRequestを使いたいのならば、まずwindow.XMLHttpRequest
が動かない場合、ActiveXObjectを指定しましょう。その場合はMSXML.DOMDocument
を使うべきです。
Microsoft.XMLDOM
は、サポート中止のオブジェクトなので、使わないでください。MSXML.DOMDocument
は、IE6~動きます。
しかし、IE6でサポート中止したオブジェクトでIE8が動かないって検索する「あなたは変です。」
それとも、会社がIE6指定なのですか?
あまりにも当たり前のことなので記述していなかったが、offset~読み取りだけです。
変更したいのなら、別の手段を使いましょう。
offset~は、自身のmargin,border,padding,width,heightに、offsetparentが関係します。関係をよく知ることが大切です。
<div itemscope itemtype="http://www.geocities.jp/sendaituri/owl/fncmjp.xml#"> <h2>仕掛け</h2> <dl> <dt><a href="#turisi"><span id="ts1" itemprop="釣り">堤防からの探釣り</span></a></dt> <dd><dfn id="systs1" itemprop="仕掛け">セイゴ針12号、ハリス2号、サルカン、錘ナツメ3号程度、道糸3号</dfn> の仕掛けです。 竿は、<dfn id="rodts1" itemprop="釣り竿">2m~2.7mの軽め竿。スピニングリール2000番程度</dfn>を使ってます。 ポイントは根がガンガンあるので、根掛必至です。 餌は、<dfn id="dects1" itemprop="釣り餌">イソメ、エラコ。ルアーは3インチ程度のワーム。</dfn> 丁寧に底を探っていきます。アタリは竿をあおってから着底までにでやすいです。</dd> <dt>堤防からのちょい投げ</dt> <dd>あまりやりませんが、錘10号の捨て錘仕掛けで狙ってます。</dd> <dt><a href="#turisi"><span id="ts2" itemprop="釣り">ルアー釣り</span></a></dt> <dd>堤防直下のエグレを狙う場合は、 <dfn id="systs2" itemprop="仕掛け">1/32ジグヘッド、ラインは4ポンドラインにフロロ6ポンドラインを直結</dfn> してます。竿は、 <dfn id="rodts2" itemprop="釣り竿">6ft程度の1/32のジグが扱えるロッド。スピニングリール1000番程度。</dfn> <dfn id="dects2" itemprop="釣り餌">ワームもそれに見合った小さいサイズ</dfn> を使います。ワームは岸壁から離れないように落とします。 アタリがあったらすかさず、竿を前にだします。そうでないと、ラインブレイクします。</dd> <dt class="brfp"><a href="#turisi"><span id="ts3" itemprop="釣り">ヘチ沿いを狙う</span></a></dt> <dd>ヘチ沿いの底を狙う場合は、水深5mくらいの場所なら、 <dfn id="dects3" itemprop="釣り餌">ブラー、スプーンが有効です。ジグヘッドなら軽い錘でゆっくり誘う</dfn>、 <dfn id="rodts3" itemprop="釣り竿">ロッドもそれに合わせた短めの竿>/dfn>、 <dfn id="systs3" itemprop="仕掛け">ラインは、根ずれを考えて、フロロを長めにつければよい>/dfn>と思います。</dd> </dl>
<釣り rdf:id="堤防からの探釣り"> <仕掛け>セイゴ針12号、ハリス2号、サルカン、錘ナツメ3号程度、道糸3号</仕掛け> <釣り竿>2m~2.7mの軽め竿。スピニングリール2000番程度</釣り竿> <釣り餌>イソメ、エラコ。ルアーは3インチ程度のワーム</釣り餌> </釣り> <釣り rdf:id="ヘチ沿いを狙う"> <仕掛け>1/32ジグヘッド、ラインは4ポンドラインにフロロ6ポンドラインを直結</仕掛け> <釣り竿>6ft程度の1/32のジグが扱えるロッド。スピニングリール1000番程度。</釣り竿> <釣り餌>ワームもそれに見合った小さいサイズ</釣り餌> </釣り> <釣り rdf:id="ルアー釣り"> <釣り餌>ブラー、スプーンが有効です。ジグヘッドなら軽い錘でゆっくり誘う</釣り餌> <釣り竿>ロッドもそれに合わせた短めの竿</釣り竿> <仕掛け>ラインは、根ずれを考えて、フロロを長めにつければよい</仕掛け> </釣り>みたいな感じでデータが取得できると思います。
Mozilla/5.0 (en-us) AppleWebKit/525.13 (KHTML, like Gecko; Google Web Preview) Version/3.1 Safari/525.13
です。最新のSafariはAppleWebKit/533.18.1
なのでかなり古い感じがします。ChromeだってAppleWebKit/534.7
です。これは Google に保存されている http://musimusi.g.ribbon.to/diary/2010diary.html のキャッシュです。 このページは 2010年10月18日 15:24:11 GMT に取得されたものです。 そのため、このページの最新版でない場合があります。とある。なのに記事は2010年8月27が最新になっている。
2010年10月3日: simplexmlでXMLの要素を消す命令がない。 appendできるなら消す方法もあるだろうと思い探すが見つからない。 ......となっていて、ちゃんと10月の記事で検索がヒットしている。
itemscope itemtype="名前空間URL"
でよいらしい。その要素の子要素はその名前空間の要素になるらしい。「デフォルト名前空間」みたいな使い方です。複数の名前空間は規定してないらしい。その分簡単な訳です。Googleは名前空間を指定した分には対応しているらしい。対応するなら自分で指定した名前空間以外も認識してデータを取得してほしいと思う。独自属性には先頭に必ず「data-」をつけなさいだそうです。
この属性の値はDOMからも取得できるとあります。
test="count(捕獲方法) &gt; 0
と書かなくてならないところを、test="count(捕獲方法) &gt; 1
となっていた。これでは2個以上ないと反応しない。XSLTでDOMオブジェクトを使うと、1からカウントするので、勘違いしたみたいです。test
しか使えないから、true判定しか出来ない。falseの判定をするには、choose
を上手く使う必要がある。htmlとCSSの区別はつけましょう。dl要素は「定義リスト」で、dt要素で「定義される用語」、dd要素で「用語の解説」を記述します。htmlは文書の構造を表すものなのでレイアウトはできないのです。
レイアウトならCSSでしょう。CSS3ならば意外と簡単にグリッドレイアウトが作れます。しかし、floatでさえ満足に使えないIE6で、「グリッドレイアウト」なんて無理です。
なんとなく趣味のページで、CSS3のcolumnやdisplay:boxを使ったレイアウトをやってますので、CSS3対応のブラウザで覗いてみてください。
chromeは、接頭辞付きのDOMをgetElementsByTagNameが出来ないらしい。getElementsByTagNameNS("名前空間","要素")で取得する。
私はxmlの変換をJavaScriptではやらない。ブラウザで違いがあるからです。XMLにXSLTスタイルをつけるか、PHPでXML変換をしたほうが、手間が少なくなり簡単です。
「Dublin Core」とあわせて使うと大半のWebにあるものがRDFで表せるとおもいます。
「FOAF」とは、Friend of a Friend-メタデータによる知人ネットワークの表現。と説明されてます。友達の友達……といった具合にデータを連鎖させる語彙です。
FOAFでは、「人」を表すクラス以外のクラスがあり、便利なのです。主な語彙では
これに、多々あるプロパティと「Dublin Core」を使うことで大抵のことは表現できてしまいます。
canvasで文字を使いたい場合fillText
を使えばよい。2008年5月にhtml5.jpで話題になっているので、そんなに目新しいことでわない。
Canvasにテキストを描画するText APIが追加されるを見て自分で実験してみるのがよろしい。
canvasの実装はブラウザによってまちまちです。
PHPで連想配列を使う場合によく示される例です。
PHPの連想配列でちょっと説明していま。
JavaScriptとは違います。
javaに限らず、7月の目に付いた検索ワードで書きましたが、IE8では別windowでページを開いた場合リファラが取れないはずです。
Javaに限らず、リファラの情報は、httpのヘッダーの情報から取得するので、送ってこないと取得できません。
もしかしたら、IE8ではあたらしいタブで開いてもリファラが取れないかもしれません。
IEにgradationを求めてはいけません。あなたは間違いをしています。
if(simplexml_load_file(XML_File名))
やif ($xml->load(XML_File名))
でturuでなければ、「読み込めない」と判断してます。readyState
が"4"(処理終了)で、status
が200(OK)の場合のみ処理します。readyState
が"4"(処理終了)で、status
が5(サーバエラー)を返したりします。XMLHttpRequestオブジェクトをloadプロパティで動作した場合、readyState
が"4"(処理終了)で、status
が200(OK)以外、処理しなくなり、レスポンスエラーがわかりにくくなります。PHPとJavaScript以外で本格的にXMLを使ってないので他の言語はわかりません。
SimpleXMLでデフォルト名前空間と違う接頭辞を扱う場合、対象の名前空間を指定してあげる必要があります。
上記のようにして、取得・追加します。取得だけでそのオブジェクトに追加をしないなら、Xpathを使うこともできます。
Xpathで取得したオブジェクトに、addChildしようとしたら上手くいかなかったことがあるので注意が必要です。
SimpleXML 関数に詳しくのっています。
locationが動かないのは、大抵の場合JavaScriptの作り方が悪いものです。自分が期待した動きをしないと「動かない」と決め付けてしまう場合が多々あります。
location.href()はIEしか動かない等々、IEとFxとWebKitとOperaでは、どこかしらが違っています。動かないと決め付けるより、動かす努力をしましょう。
WebKitが違うのではなくIEが他のブラウザと違うと思ってます。
上記のように認識してます。margin,border,paddingの扱いの違いによって計算方法が変わってしまうので、offsetを使う場合は、margin,padingは0にborderも小さい値にしています。
operaは、offsetLeft,offsetTopの基準が他のブラウザと違いますので注意が必要です。
initEvent
はDOM2 Eventで勧告されているので、最新のGecko,AppleWebKit,Prestoを使ったブラウザなら同じ指定で使えます。
initEvent
はEventを初期化するものでdispatchEvent
でEventを発生させる場合の初期化等に使用します。
IE8-は、DOMの勧告に完全には従ってないのでinitEventは使えませんので注意が必要です。
KeyboardEventは、FxがDOM3に対応しているので記述方法が違います。OperaはKeyboardEventが動きません。
あまり参考にできませんが、EVENT管理のサンプルを参照してみてください。
アクセログを見る限り、Refererはちゃんと取れてます。
そんなことよりIE6はやめましょう。企業がいつまでもIE6を使うのは関心できません。
location.searchは、URLの?部分の後ろを取得を取得するので、キャッシュとは関係ないと思います。
このページは、URLを変化させないでページ情報を変えるので、URLの情報はあまり当てになりません。そんなページもあります。
画像の大きさ、出力する画面の大きさなどで変わるので、画面と画像の大きさで変わるようにする必要があります。
画像の大きさにかかわらず左右のマージンを統一はCSSで可能ですが、倍以上サイズの違う画像を上手く並べるのはCSSだけでは無理なので、 HTMLやCSSを動的変える必要があります。
私はめんどうなのでやりません。
img要素に、width属性やheight属性が指定してあり、それより大きい画像を出力しようとした場合にスクロールしたいのなら、overflow: scroll;の指定をします。
Windowに横スクロールを出すのは、デザイン的にも感心できないので、横スクロールが出ないようにしたほうがよいでしょう。
IE7-では、tbody要素をかかないと、appendChild出来ない仕様のはずですが、IE8から書かなくて良いように仕様が変更されていると聞きました。
IE7-では、tbody要素をかかないと、appendChild出来ないバグがあると書く人がいますが間違いです。HTMLの仕様書にはTBODY要素は TABLE の中に必ず出現しなければなりません。とあります。 ただし、TABLE要素内に、THEAD要素、TFOOT要素がなく、TBODY要素が1つだけの場合省略可能とあるので、tbody要素をかかないと、appendChild出来ないのはある意味正しい挙動であります。
この仕様をふまえて個人的には、「TABLE要素にTR要素を追加する」というより、「TABLE要素そのものを入れ替える」ほうがHTMLの仕様に準じた形でソースを作れるはずです。
TABLE要素には、THEAD要素、TFOOT要素、TBODY要素の順番に出現させなければなりません。ただし、THEAD要素、TFOOT要素は省略可能。TBODY要素は前述の通りです。
fireEventはIE用のDom2 EventのinitEventに相当するモノです。
あまり参考にできませんが、EVENT管理のサンプルを参照してみてください。
JavaScriptのwindowの操作はあまりお勧めできません。DOM+CSSでそれらしく作るほうが好きです。
SVGから他文書を読み出した場合などの極限られた場合のみ使ってます。
IE6は画像サイズが残る仕様みたいです。個人的には、width、heightを指定したほうが良いと思います。
まぁ、作り方だと思うのですが……。
appendChildするということは、createElementした後にid属性をsetAttributeすると思うのですが、そのDOMオブジェクトを使えば良いのではないかと思うのだが……。
まぁ、作り方だと思うのですが……。
HTML4の流れを汲むHTML(XHTML)では使えません。だからtarget=blank 使わないことは当たり前のことです。
HTML5では使えます。堂々と使ってください。
そのような経験をしたことは無いです。もしかしたら、気にしてないだけかも知れません。気にしてないってことは、大きな問題が無いってことです。
IE7より、IE8のほうが正しいと感じます。IE7-を基準にしたらダメに決まってます。
IE6は無視してください。古代のブラウザなのですから。
<?php class get_string { var $RA; function String_Get ($SearchSTR, $StartSTR, $LastSTR, $StartLen) { $pos = strpos($SearchSTR, $StartSTR, $StartLen); $WK_pos = strpos($SearchSTR, $LastSTR, $pos) - $pos; $WK_pos = $WK_pos + $pos; if ($WK_pos == 0) { $this -> RA = substr($SearchSTR, $pos); } else { $this -> RA = substr($SearchSTR, $pos, strpos($SearchSTR, $LastSTR, $pos) - $pos); } return $this -> RA; } } ?>
<?php class get_user_agent { var $UA; var $RV; var $Browser; var $BEngine; var $OS; var $REFERER; var $Get_STR; function get_user_agent (){ $this -> UA = $_SERVER["HTTP_USER_AGENT"]; $this -> Browser = array('MSIE' => ';', 'Firefox' => ' ', 'Chrome' => ' ', 'Safari' => ' ', 'Opera' => ' '); $this -> BEngine = array('AppleWebKit' => ' ', 'Gecko' => ' ', 'Presto' => ' ', 'Trident' => ';'); $this -> OS = array('Linux' => ';', 'Windows NT' => ';', 'Google' => ';', 'iPhone OS' => ';', 'Mac OS' => ';', 'OS/2' => ';'); $this -> Get_STR = new get_string(); } function GetBrowserInfo() { $this -> RV = "unknown"; while(list ($key, $val) = each($this -> Browser)) { if (ereg($key, $this -> UA)) { $this -> RV = $this -> Get_STR -> String_Get($this -> UA, $key, $val, 0); break; } } return $this -> RV; } function GetBrowserEngine() { $this -> RV = "unknown"; while(list ($key, $val) = each($this -> BEngine)) { if (ereg($key, $this -> UA)) { $this -> RV = $this -> Get_STR -> String_Get($this -> UA, $key, $val, 0); break; } } return $this -> RV; } function GetOSInfo() { $this -> RV = $this -> Get_STR -> String_Get($this -> UA, '(', ')', 0); while(list ($key, $val) = each($this -> OS)) { if (ereg($key, $this -> UA)) { $this -> RV = $this -> Get_STR -> String_Get($this -> UA, $key, $val, 0); break; } } return $this -> RV; } } ?>
IEは昔からappendChild
出来ないので、innerHTML
するものと思ってます。
innerHTML
HTML5では正式に勧告になる予定です。
appendChild
は追記ですが、innerHTML
は指定した要素の中に上書きします。
この挙動はIEに限ったののではありません。
このページよりわかりやすい解説をしているページはいっぱいあります。
互換モードなどがあるので試してみたらよいのでわないかと思います。
やりかたは、わかりやすい解説をしているページはいっぱいあります。
css3でtransformを使えばできます。
やりかたは、このページよりわかりやすい解説をしているページはいっぱいあります。
出来ないので諦めてください。
Fxをお勧めします。
レイアウトが崩れるのは、作り方が悪いからです。
CSS2.1を使う場合では、WebKitはあまりバグはないはずです。
画像を利用する場合、img要素やobject要素にwidth属性やheight属性がないと、ブラウザは画像の描写が終わるまで画像の大きさがわかりません。 その辺を考慮したscriptを作らないと困ったことになります。
「なんとなく趣味のページ」では、XMLを使うことで回避してます。
普通にCSSに仕様書を読んでください。SVGのCSS仕様書はあったはずです。
仕様書の内容が100%実現している訳ではないので、あとは自分で実証してください。
TABLE要素の内側になにかしらの線を引きたいらし。PHPは関係ないですし、HTMLもあまり関係しないと思います。
CSSの話だと思うのですが、調べているのはborderの設定方法でしょうか。テーブルに上手く線を引くには、大枠のtable要素とセルを表すth要素とtd要素にborderを設定します。 bordre以外で線を引くには、text-decorationを使うくらいしか思いつきません。
PHPはまったく関係のない話なので、Webデザインのための勉強をしっかりやることをお勧めします。
それと、IEは8以上を使って開発したほうがよいです。IE8はCSS2.1に対応しています。IE9はCSS3に一部対応するみたいなのでIE7では時代遅れのデザインになってしまいます。
SVGはXMLなので、他のXML語彙が使えます。どう記述すればよいのか分らない。人はそもそもXMLの基礎が分ってないので論外です。素直にSVGの解説書通りに書いて楽しんでください。
接頭辞でよく使うdcはDublin Coreの略で、メタデータ記述に使う語彙の通称のことです。RDFの述語を規定しています。この辺りのXMLの記述は変と思う記述があったりする。
rdf:type="http://"でnamespaceが書いてあったりするのだが、rdf:type
は「リソースのクラスを識別する」とある。
この場合、http://xxx.xxxxx.xx#yyyyyがclassに該当していればよいのだが、namespaceの書き方によっては、どれがclassでどれがPropertyだかわかりにくいことがある。
XMLに詳しくないのなら、RDFのトリプルなど余計なことは考えなくてよいとおもいます。とりあえず、XMLの語彙を使ってみてください。
ただし、RDF語彙を使うのなら、その意味を考えて使ってください。今定義してあるXML語彙は、RDFのトリプルを前提に作られているものが多いです。
サーバーサイドの言語でリファラから検索ワードの判別は出来るので必要がないかなと思ったのですが、XmlHttpRequestで通信していると、サーバーサイドのリファラはXmlHttpRequestしたページになるので検索ワードが取得できない。 JavaScriptでリファラを取得してPOSTしても、「&」を変換してあげないとデータが送れない。
JavaScriptでのリファラから検索ワードの判別も必要だと思ったのでサンプルを作ってみた。しかし、PHPでリファラから検索ワードの判別を作ってしまったからあまり使い道はない。ちょっと残念な結果になってしまった。
Atomはコンテンツを配信するモノです。配信したくない場合Atomを作らなければよいのです。
公開されたXMLは使うひとが好きに使えるので非公開なんてあるはずがない。
もうすこし、XMLの勉強でもしたらよいのに。
CSSはHTMLの見栄えを指定するモノで、動きを規定するモノではない。
検索するより、CSS3のWDでも覗いてみたら良いと思うのですが……。
もうすこし、英語の勉強でもしたらよいのに。
host名はDNSで名前変換され、IPアドレスになって通信します。従って同じ経路を辿って通信すれば「hostが変わる」ことは無いはずなのですが……
行きと帰りで通信経路が変わった場合、通信しない場合もありえるのですが。
まぁ、通信しているサーバーの設定の問題だと思います。
ieに限らず、表示にかかわる位置決めがoffsetです。
エラーコンソールにメッセージが出てない場合以下のことが考えられます。
transformnode
の処理をしていない。対処方法は下記の通りです。
CSS3などの新しい指定を使おうといている人がこんな検索をしてはいけません。
IE7を気にするのなら、CSS2.1すら使えません。
HTMLを勧告通りにマークアップをすれば、IE6でも、IE7でも情報を取得できないことはありません。
CSSの指定よりアクセシビリティの勉強をお勧めします。アクセシビリティ抜きにしたCSSはダメCSSになりがちです。
function STR_Text_Get (StartSTR, LastSTR, SearchSTR) { Start_Point = SearchSTR.indexOf(StartSTR,0); if (Start_Point > -1) { Start_Point = Start_Point + StartSTR.length; STR_Length = SearchSTR.indexOf(LastSTR,Start_Point) - Start_Point; var SearchChara = SearchSTR.substr(Start_Point, STR_Length); SearchChara = decodeURI(SearchChara); return SearchChara; } else { return false; } }
$SEngine = array('google' => 'q=', 'yahoo' => 'p=');
と指定する。使う場合はwhile(list ($key, $val) = each($SEngine))
として使う。JavaScript風に$SEngine[google]
として使えるのかなと思ったらそうではないらしい。イメージは配列の偶数をKEYに、奇数をデータに使っている感じである。
したがってイメージしていたことが出来なくなってしまった。$XMLNameSpace = array('atom' => 'http://www.w3.org/2005/Atom');
と渡して、別のPHPで展開する場合、
atom
はhttp://www.w3.org/2005/Atom
と理解できて展開が楽である。while(list ($key, $val) = each($SEngine)) { if (ereg($key, REFERER)) { $pos = strpos(REFERER, $val) + mb_strlen($val); $WK_pos = strpos($this -> REFERER, ';', $pos) - $pos; $WK_pos = $WK_pos + $pos; if ($WK_pos == 0) { $RV = urldecode (substr(REFERER, $pos)); } else { $RV = urldecode(substr(REFERER, $pos, strpos(REFERER, ';', $pos) - $pos)); } break; } }
$SEngine = array('google' => 'q=', 'yahoo' => 'p=');
で連想配列を作り、
while
でループしながら、正規表現で文字列のマッチをして検索エンジン毎の処理を減らしてます。<?php class xml_load { var $file; var $XMLtype; function xml_load ($in1 = "",$in2 = "",$in3 = "") { header("Content-type: application/xml"); error_reporting(0); $this -> XML_File = $in1; $this -> XSLT_File = $in2; $this -> XMLNS = $in2; $this -> XPath = $in3; } } class xml_load_XSLT extends xml_load { function Get_XML() { /** XMLファイルの読み込み */ $xml = new DomDocument(); if ($xml->load($this -> XML_File)) { $xslt = new DomDocument(); if ($xslt->load($this -> XSLT_File)) { $processor = new xsltprocessor(); $processor->importStyleSheet($xslt); /** XSLT変換後のXML_object */ $xml_obj = $processor->transformToXML($xml); } else { $xml_obj = "<p>"; $xml_obj .= "XSLTファイルエラー(<em>"; $xml_obj .= $this -> XSLT_File; $xml_obj .= "</em>)"; $xml_obj .= "</p>"; } } else { $xml_obj = "<p>"; $xml_obj .= "XMLファイルエラー(<em>"; $xml_obj .= $this -> XML_File; $xml_obj .= "</em>)"; $xml_obj .= "</p>"; } return $xml_obj; } } class xml_load_XPath extends xml_load { function Get_XML() { if (simplexml_load_file($this -> XML_File) ){ $xml_text = simplexml_load_file($this -> XML_File); while(list ($NS, $URL) = each($this -> XMLNS)) { $xml_text->registerXPathNamespace($NS, $URL); } if ($XML_TEXT_XPath = $xml_text->xpath($this -> XPath)) { $XML_TEXT = array('success' =< true, 'XMLobj' =< $XML_TEXT_XPath); } else { $ERR_TEXT = "<div>"; $ERR_TEXT .= "<p><em>XPathエラー</em></p>"; $ERR_TEXT .= "<dl>"; reset($this -> XMLNS); while(list ($ENS, $EURL) = each($this -> XMLNS)) { $ERR_TEXT .= "<dt>接頭辞</dt>"; $ERR_TEXT .= "<dd>".$ENS."</dd>"; $ERR_TEXT .= "<dt>名前空間</dt>"; $ERR_TEXT .= "<dd>".$EURL."</dd>"; } $ERR_TEXT .= "<dt>XPath</dt>"; $ERR_TEXT .= "<dd>".$this -> XPath."</dd>"; $ERR_TEXT .= "</dl></div>"; $XML_TEXT = array('success' =< false, 'XMLobj' =< $ERR_TEXT); } } else { $ERR_TEXT = "<p>"; $ERR_TEXT .= "XMLファイルエラー(<em>"; $ERR_TEXT .= $this -> XML_File; $ERR_TEXT .= "</em>)"; $ERR_TEXT .= "</p>"; $XML_TEXT = array('success' =< false, 'XMLobj' =< $ERR_TEXT); } return $XML_TEXT; } } ?>
<?php class get_user_agent { var $UA; var $RV; var $Browser; var $Engine; var $OS; function get_user_agent (){ $this -> UA = $_SERVER["HTTP_USER_AGENT"]; $this -> Browser = array('MSIE' => ';', 'Firefox' => ' ', 'Chrome' => ' ', 'Safari' => ' ', 'Opera' => ' '); $this -> Engine = array('AppleWebKit' => ' ', 'Gecko' => ' ', 'Presto' => ' ', 'Trident' => ';'); $this -> OS = array('Windows NT' => ';', '(' => ')'); } function GetBrowserInfo() { $this -> RV = "unknown"; while(list ($key, $val) = each($this -> Browser)) { if (ereg($key, $this -> UA)) { $pos = strpos($this -> UA, $key); $WK_pos = strpos($this -> UA, $val, $pos) - $pos; $WK_pos = $WK_pos + $pos; if ($WK_pos == 0) { $this -> RV = substr($this -> UA, $pos); } else { $this -> RV = substr($this -> UA, $pos, strpos($this -> UA, $val, $pos) - $pos); } break; } } return $this -> RV; } function GetBrowserEngine() { $this -> RV = "unknown"; while(list ($key, $val) = each($this -> Engine)) { if (ereg($key, $this -> UA)) { $pos = strpos($this -> UA, $key); $WK_pos = strpos($this -> UA, $val, $pos) - $pos; $WK_pos = $WK_pos + $pos; if ($WK_pos == 0) { $this -> RV = substr($this -> UA, $pos); } else { $this -> RV = substr($this -> UA, $pos, strpos($this -> UA, $val, $pos) - $pos); } break; } } return $this -> RV; } function GetOSInfo() { $pos = strpos($this -< UA, '(' ); $this -< RV = substr($this -< UA, $pos, strpos($this -< UA, ')', $pos) - $pos); while(list ($key, $val) = each($this -< OS)) { if (ereg($key, $this -< UA)) { $pos = strpos($this -< UA, $key); $WK_pos = strpos($this -< UA, $val, $pos) - $pos; $WK_pos = $WK_pos + $pos; if ($WK_pos == 0) { $this -< RV = substr($this -< UA, $pos); } else { $this -< RV = substr($this -< UA, $pos, strpos($this -< UA, $val, $pos) - $pos); } break; } } return $this -> RV; } } ?>
IEでは「target blank」ではリファラーがとれなくて云々らしい。
HTML4の流れのHTMLでは「target="_blank"」はフレームに対する指定なのでdocumentA-window-documentBという構造フレームの構造をもてばリファラーはとれてもよいのですが、 フレームに対する指定を別の目的にした場合、documentA-window window-documentBとなりリファラーがなくなっても差し支えない。windowが同一か別なのかで挙動が変わります。 HTML4の流れでは、「target="_blank"」でフレームを使わない場合、別のwindowを開く処理のほうがしっくりくると思います。
HTML5の場合、「openerアトリビュート」が無くなるとWDにあるので、リファラーがなくなる動作は正常です。
html5.jpの管理人にバグがあると報告しましょう。
ただしHTML5はWDなので、動作しないサンプルを見て「バグ」だと叫ぶ人も「変な人」だと思いますが……
カナヘビは木に登ったりします。可能ならば背の高い水槽を用意して「縦のレイアウト」をしてあげるとよいでしょう。 ただし、カナヘビは自分の体長の約2倍のジャンプ力を見せるのでその辺を考慮しないと、太陽光での日光浴をさせていると逃げられる場合があります。
室内でしか飼わないので、太陽光にあてる必要は無いなんて考えているのなら飼育をすることをやめてください やはりカナヘビには太陽光が一番よいようです。電球はあくまでも非常・補助的な手段です。
HTML5に限らず、dispatchEventとfireEventやinitEventを組み合わせれば、Eventから他のEventを起動することが出来ます。DOM水準2を満足しているブラウザなら可能です。
文書オブジェクトモデル(DOM)水準2 イベント規定あたりを見るとよいのかもしれません。
ちなみに「なんとなく趣味のページ」で使っているDispatchEvent_obj.EventObject
はIE6~イベントから別イベントを起動できるように作ってます。(IE独自仕様に対応しているだけなのですが……)
前にも書きましたが罠による捕獲はお勧めしません。理由としては下記があります。
まず、カナヘビは日当たりのよい場所にいます。捕獲に適している場所は、草むらと草があまり生えてない場所が混在している場所です。そんな場所を探してください。
そんな場所を見つけたら、虫をチェックします。バッタ類がいる時期なら、ショウジョウバッタ、コオロギ類がたくさん存在していること、 バッタ類がいない季節の場合コモリグモなどの地面を歩き回るクモ類が多く存在している場所かチェックします。運がよければその段階でカナヘビに遭遇します。
条件にあった場所の場合、あとは注意して歩きまわりましょう。カナヘビがいれば草むらの中を逃げるので音と草の動きに注意をはらいます。
カナヘビがいたならば、その場所を朝夕にチッェクしてみましょう。日向ぼっこしているカナヘビにあえるはずです。ただし、気温が高い場合動きが早いので捕まえるのは難しいです。
春、秋が捕獲に適していると思います。冬越しをさせるつもりなら、春に捕まえて、日にカナヘビの頭ぐらいの大きさの虫を5匹程度与えて、30分程度の日光浴をさせて飼育させるのがベストです。
ペットショップで売っているコオロギは栄養価が低いのでコオロギにも餌を与えましょう。
カナヘビの飼育は犬猫と同じくらい手間がかかります。安直に飼育できるものではないです。
HTML要素が消えるのか、HTMLに変換できないのか、この検索ワードでは不明です。私自身はXSLTでhtmlが消えるという経験はないのでわかりません。
しかし、IEのXSLTには挙動が変なところがあります。xsl:output method="html"
でHTMLに変換するのですが、xslt:elementでname="script"を書くとそこでXSLTの変換をやめます。scriptを書かなければ変換するので、そこまでは有効に変換して<xslt:element name="script">でscriptタグを吐き出した時点で変換を中止します。
FxやWebkitではそんなことはないのですが、IEでは8でも変換を停止します。したがってバグというより、「仕様」であるのかもしれません。
仕事でどうしてもIE6を使いなさいという場合を除きIE6は切り捨てたほうがよろしい。
IE6は、DOMへの対応が未完成なのでどうしても挙動が変になります。Web標準とIE6への対応の両立は難しいと思います。
どうしてもIE6への対応が必要な場合、IE6を中心に開発をしなくてはなりません。その場合、Web標準の導入はかなり限定されたものになります。
最新の仕様に対応するならば、IEシリーズは切り捨てるぐらいのことをしなければ対応は無理です。
IE6の挙動を検索する時点で、あたらしい仕様への対応を諦めているのだなぁと見えてしまいます。
canvasで楕円を描写する方法を書いたので参考にしてください。
JavaScriptでXSLTProcessorのサンプルを参考にしてください。
古いサンプルなので、IE6に対応です。
「線を動的に引く」がなにを意味しているのかちょっと解りにくいのですが、マウスの動きに合わせてなら解ります。
canvas要素に落書きをするスクリプトを参考にしてください。
もともとCanvasはJavaScriptなので絵を描くときforでまわしたりするのでCanvas自体が動的に生成されていると思うのですが。
WebKit系のブラウザはxml-stylesheetとしてのみXSLTに対応すると明言していて、2010年7月29日現在まだその記述が生きています。「SafariはXSLTをサポートしていますか?」で検索してください。
多分、同じWebKit系のchromeもダメでしょう。
どうしても、閲覧環境を気にしないでXSLTを使いたいなら、PHPなどのXSLTProcessorを使うか、xml-stylesheetとして使うしかないと思います。
上記はDOMの仕様書に規定してあるので、たいていのブラウザなら同じはずです。
それ以外のプロパティはブラウザ毎に対応が違うはずなので確認が必要です。
JavaScriptでは、イメージを読み込むときWidthやheightの指定がないと、それに関係する部分の初期値が0と指定されます。
onloadを使ってロードが終了したらとかやると、画像のロードが終わらない場合処理がいつまでも進まないなんてことになってしまいそうなので、 それなりの対処は必要になると思います。
responseText
でデータを取得する。responseXML
で取得して、appendChild
すると、WebKitはelement以外は追加できないという縛りがある。XMLHttpRequest
を使う場合は、同じPHPに対して違う値をPOSTします。条件によってsend
する内容を変えます。
POSTされたPHP側は、POSTの内容によって挙動を変えるようしているので、JavaScriptとPHPは目的によって分けられたPHPとだけ通信を行います。
「なんとなく釣りのページ」は、turi_doc.htmlのJavaScriptが、a要素のhref属性の値を取得してconversion_xslt.php
と通信してHTMLに変換して表示します。
したがってa要素でリンクがクリックされるたびに違う値をPOSTしています。
DOM操作で、form要素の中を書き換えてsubmit
する方法も考えられます。どちらにしても通信が完了しない状態で新しい通信をすると挙動は変になります。
WebKit系のブラウザでは、JavaScriptでXSLTの変換はやらない方針らしいので現状では無理っぽい。
innerHTMLの挙動が遅いのであまり使えない。(innerHTMLはHTML5では規定されている)
検索の内容からなにがしたいのかよく解らないのでが、SVGはxlink
を指定することによってJavaScriptを動かすことができます。
ただし、Fx、WebKit系はDOMの操作・スタイルの変化・イベント属性でのイベントの起動ができます。Operaはイベント属性でのイベントの起動ができます。
SVGをHTMLで使う場合、object要素を使ったほうがよろしいと思います。
CSSをWEB標準でかいてないからレイアウトが崩れます。oldIEに適応したページを見に行くとよく崩れます。IEを後方互換モードにすれば大半は解決するはずです。
IE8で「レイアウトが崩れて読めない」ページを作るのは、Web開発者の質の問題です。
boxレイアウトやcolumnレイアウトで段組が楽につくれます。margin-imageでマージンにイメージがつけられたり、背景にグラデーションをかけたりできます。
なんとなく趣味のページで実験中です。
普通にenterkeyを押せばKeyEventが発生します。
dispatchEventとfireEventやinitEventを組み合わせれば、Eventから他のEventを起動することが出来ます。
IEはヘッダー情報としてtext/csvを返してこないので、拡張子でチェックするしかないです。
盗るのは犯罪です。絶対にやめてください。
罠による捕獲はあまりお勧めできません。できるかぎり足であるいて確認して捕まえてください。
canvasはcanvas要素に対して適応するJavaScriptなので直接div要素に書くことはできません。
現状のブラウザでは、動的にcanvas要素を生成した場合上手く動かない場合があります。
指定はないので、がんばって作ってください。サンプルが出来たら教えて欲しいです。
appendChildするDOMオブジェクトがダブって使っているのかもしれません。
XMLHttpRequest
でPOSTした場合以外、普通にリロードが発生してJavaScriptで動的につくったDOMは、普通にきえます
<dc:date rdf:datatype="http://purl.org/dc/terms/W3CDTF">2009-09-09</dc:date>
は解析しているらしく、2009年9月9日と表示されている。
Dublin Coreのdateを理解するなら、dc:titleも理解してくれても良いと思うのだが、こちらは使われない。dc:title
くらい使ってよ。foaf:Image rdf:about=
とRDF/XMLで普通に使われる語彙で画像の場所のURLが指定してあるので、語彙さえ理解できていれば簡単に画像が取得できるようにしてある。などと書いてある。「ふーん。次世代の HTML」ですか。HTML5.JP とは
HTML5 は、WHATWG および W3C が HTML4 に代わる次世代の HTML として策定を進めている HTML 仕様です。HTML5.JP では、HTML5 の仕様に関するトピックを紹介していきます。
HTML5.JP では、HTML5 の最新情報に加え、すでに利用可能な Canvas の使い方などを詳しく解説します。
なお、当サイトは、W3C や WHATWG とは一切関係がありません。と書いてあるから、その団体とは関係ないページなのでしょう。
prototype
となるものを使うと、スクリプトをメゾット化できたり、オーバーライドすることが出来ることを知った。function canvas_draw(canvas) { var drawing = false; var S_position = {x:-1,y:-1}; var ctx = canvas.getContext("2d"); AddEvent_obj.EventObject('mousedown', canvas_draw_start, canvas); AddEvent_obj.EventObject('mousemove', canvas_drawing, canvas); AddEvent_obj.EventObject('mouseup', canvas_draw_end, canvas); function canvas_draw_start(evt) { drawing = true; S_position = canvas_draw.coordinates_get(evt); } function canvas_drawing(evt) { if (!drawing) {return;} var E_position = canvas_draw.coordinates_get(evt); var canvas = TargetEvent_obj.EventObject(evt); var ctx = canvas.getContext("2d"); ctx.strokeStyle = "rgba(0,0,0,0.5)"; ctx.lineWidth = 0.8; ctx.beginPath(); ctx.moveTo(S_position.x, S_position.y); ctx.lineTo(E_position.x, E_position.y); ctx.closePath(); ctx.stroke(); S_position = E_position; } function canvas_draw_end() { drawing = false; } canvas_draw.coordinates_get = function (evt) { var event_Target = TargetEvent_obj.EventObject(evt); var offset_pro_value = StyleObject.GetOffset(event_Target); var offset_scroll_value = StyleObject.GetScroll(); var Coordinates_Mouse_value = Coordinates_Mouse(evt); // canvas要素はoffsettopが取得できない。 if (offset_pro_value[0] == 0) { offset_pro_value[0] = NodeObject.Parent(1,event_Target).offsetTop; } var offset_Y_revise = Coordinates_Mouse_value[0] + offset_scroll_value[0] - offset_pro_value[0]; var offset_X_revise = Coordinates_Mouse_value[1] + offset_scroll_value[1] - offset_pro_value[2]; return {x: offset_X_revise, y: offset_Y_revise}; } }
simplexml
を使って変換する場合と、xsltprocessor
を使って変換する場合がある。
どっちもXMLをHTMLに変換するPHPスクリプトなので、同じ名前で処理をさせたい。その場合オーバーライドする必要がある。function xml_XSLTProcessor(xmlhttp,xslt_url){ var xmlDoc = xmlhttp.responseXML; // xsltの読み込み if (window.ActiveXObject){ xslt = new ActiveXObject("Microsoft.XMLDOM"); xslt.async = false; xslt.load(xslt_url); var doc = xmlDoc.transformNode(xslt); } else { var xslt = new XSLTProcessor(); var xsltDoc = document.implementation.createDocument("", "", null); xsltDoc.async = false; xsltDoc.load(xslt_url); xslt.importStylesheet(xsltDoc); // XMLをXSLTでDOM変換 var fragment = document.implementation.createDocument("", "", null); var doc = xslt.transformToFragment(xmlDoc, fragment); } return doc; }
とありますので、注意が必要です。21. SafariはXSLTをサポートしていますか?
Safari 1.3以降では、ロード時にXMLページのXSL変換をサポートしています。XSLTのサポートは、XMLページの先頭に埋め込まれた次のXSLページ処理命令に限られています。
<?xml version="1.0" ?> <?xml-stylesheet type="text/xsl" href="your_transform_file_here.xsl" ?>HTMLページ内の任意のXMLに適用するためにJavaScriptを通じてXSLTを使用することはできません。
return
での戻り値を、IEではDOMobject扱いをしてくれません。innerHTML
でHTML文書に反映させなければいけません。appendChild
する必要があります。innerHTML
では反映できません。offsetwidth
で検索をする人がいるのだが、そんなにoffsetwidth
が大切なのか悩む。
個人的にはイベントが発生した要素の左上の位置のほうが気になる。dom.offset = function(offset_element) { var offset_valueH = offset_element.offsetHeight; var offset_valueT = 0; var offset_valueL = 0; var offset_parent = 0; do { offset_valueT += offset_element.offsetTop || 0; offset_valueL += offset_element.offsetLeft || 0; offset_element = offset_element.offsetParent; offset_parent += 1; if (offset_element) { if(offset_element.tagName == 'BODY') break; var pos_style = offset_element.style.position; if (pos_style == 'relative' || pos_style == 'absolute') break; } } while (offset_element); offset_tbl[0] = offset_valueT; offset_tbl[1] = offset_valueH; offset_tbl[2] = offset_valueL; offset_tbl[3] = offset_parent; return offset_tbl; }
border
があると、要素によってその数値を足したり足さなかったりして正確な数字は返しません。offsetwidth
やoffsetHeight
はゼロで設定されます。offsetwidth
やoffsetHeight
の値を取得しても意味の無い数値が取得されます。offsetwidth
やoffsetHeight
に設定されて、初めて値がとれます。ようするに画像が読み込まれないと正確な位置が取得できないのです。offsetwidth
やoffsetHeight
の初期値としてセットされます。正しいwidth属性やHeight属性を記述しておけば、ある程度正しい位置が取得できるのです。appendChild
やinnerHTML
する処理を動かす場合は、一対一になるようにオブジェクトを定義しなければ上手く処理をしないのである。location.search
でリンクされた場合にコンテンツを表示するようになりました。XMLHttpRequest
を一つにまとめるために多くの引数が必要になってしまった。
引数を大量に書くより、new Object
でオブジェクトを使って、連想配列でデータを格納したほうがスクリプトがすっきりする。