きちんとGoogleに渡すためのformを生成することにした。
var nForm = document.createElement('FORM'); with(nForm){ action = 'http://www.google.co.jp/search'; method = 'GET'; } document.body.appendChild(nForm); var nP = document.createElement('P'); nForm.appendChild(nP); var nInput = document.createElement('INPUT'); with(nInput){ type = 'text'; name = 'as_q'; size = '25'; } nP.appendChild(nInput); var nHidden = document.createElement('INPUT'); with(nHidden){ type = 'hidden'; name = 'as_sitesearch'; value = document.domain; } nP.appendChild(nHidden); var nSubmit = document.createElement('INPUT'); with(nSubmit){ type = 'submit'; name = 'btnG'; value = 'search'; } nP.appendChild(nSubmit);
ところが、生成したFORM要素のinnerHTML
を見てみる(@IE6)と、
<P><INPUT size=25><INPUT type=hidden><INPUT type=submit value=search></P>
属性が足りない。name属性はどこへ。実体としてはあるようだが、innerHTMLで見ると消えている。特に、type=hiddenのvalue属性は実体としても、無い。
with(nHidden){ type = 'hidden'; name = 'as_sitesearch'; } nHidden.value = document.domain;
と、このようにvalueプロパティの代入箇所をwith文の外に出してやったらinnerHTML
にも現われ、Googleにも渡された。意味がさっぱりわからないものの、とりあえずメモ。