きちんと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にも渡された。意味がさっぱりわからないものの、とりあえずメモ。