+ JavaScript の質問用スレッド vol.56 +

このエントリーをはてなブックマークに追加
932Name_Not_Found:2007/06/08(金) 14:07:53 ID:???
すみません。教えてください。IE限定で使うつもりです。
ボタンを押す→iframeを動的に作る→yahoo他検索エンジン(APIがないページ)を読み込む→
変数を検索窓に入れる→submit→結果のページの<body>を取得(変数Bに格納)
ということは可能でしょうか?iframeを作ってyahooを表示させることはできました。

js---
function send2(){
var BB;
var str = 'キーワード';
var iframeID = 'if2';
var iframe = document.createElement('iframe');
iframe.setAttribute('id','inner');
iframe.setAttribute('src','http://example.com/');
document.getElementById(iframeID).appendChild(iframe);
iframe.onreadystatechange = function () {
if (this.readyState == "complete") {
//IFRAMEに読み込んだページの<input>を探してstrをいれてsubmit()
//結果のページのhtmlを取得
this.onreadystatechange = null;
}
}
}

html---
<form>
<input type = "button"
value = "送信"
onclick = "send2()">
</form>
<div id="if2"></div>
933Name_Not_Found:2007/06/08(金) 14:17:15 ID:???
>>932
【FAQその1】Q1/A1
934Name_Not_Found:2007/06/08(金) 15:09:33 ID:???
933
ありがとうございます。
「アクセスできない」は、jsからは読み取りもできないということですか?
書き換えたりするつもりはないですが
935Name_Not_Found:2007/06/08(金) 15:39:03 ID:???
>>934
iframeを作る時に既に検索窓にキーワード入れておくようにするんじゃだめなの?

キーワードを入れてボタン押す→動的にiframeを作る→既に窓にキーワードが入ってる

みたいにして、iframeのsrcを
http://search.yahoo.co.jp/search?p=javascript&x=0&y=0&fr=top_v2&tid=top_v2&ei=euc-jp&search.x=1
みたいにするとか。
936Name_Not_Found:2007/06/08(金) 15:57:26 ID:???
>>932
複製権侵害しない?大丈夫?
余所のページを自分のページのコンテンツのように表示させるのは法律違反だよ
937Name_Not_Found:2007/06/08(金) 19:21:11 ID:???
結局やりたいことは、キーワードでヒットした結果のHTMLを取得したいだけです。

>935
ありがとうございます。GETなフォームなら使えそうですね

>936
ありがとうございます。
一部だけで、引用元(元サイト)を明示しますしリンクもはるので大丈夫のようです
938Name_Not_Found:2007/06/08(金) 19:31:32 ID:???
>キーワードでヒットした結果のHTMLを取得したいだけです。

まだ勘違いしてる予感w
939Name_Not_Found:2007/06/08(金) 23:09:13 ID:???
>>937
そのキーワード検索をやって結果を返す鯖が自分の鯖であれば、
内容にアクセスできる(JSを含んだHTMLを同じ鯖に入れておけばよいから)。
そうでなければ、どうやってもできない。「取得」ももちろんできない。
940Name_Not_Found:2007/06/09(土) 00:37:01 ID:???
var a = 0;
function SCLL1() {
if ( a < 600 ) {
a = a+150;
window.scroll(a,0);
}
setTimeout("SCLL1()",5);
}

上記スクリプトでは、一度しかスクロールしません。
何度もスクロールさせたいのですが、どうやってaの値をリセットすればよろしいのでしょうか。
941Name_Not_Found:2007/06/09(土) 00:52:06 ID:???
>>940
> aの値をリセット
どうゆうこと?alert(a)ってやればaが増えてるのはわかると思うけど。
942Name_Not_Found:2007/06/09(土) 01:00:29 ID:???
>>941
僕の解釈が間違っているかも知れません。
var a = 0;
function SCLL1() {
if ( a < 600 ) {
a = a+150;
window.scroll(a,0);
}
setTimeout("SCLL1()",5);
}
上記スクリプトでは、更新しない限り一度しか動きません。
それはaの値が600のままだからだと解釈しました。

aの値をリセット云々は置いておいて
上記スクリプトを何度も動くようにするにはどうすればよろしいのでしょうか。
よろしくお願いいたします。
943Name_Not_Found:2007/06/09(土) 01:29:00 ID:???
>>942
普通に動くよ?
「一度しか」の意味を取り違えてるのかな
どういうこと?
600まで行った後にまたスクロール戻して、で、もう一回スクロールさせたいわけ?

まずはifの中にalert(a)を入れてaの値が変わってることを確認してくれ。
で、そのaの値がどうなりたいのかを言ってくれ
944Name_Not_Found:2007/06/09(土) 01:30:49 ID:???
aはbになりたいんだ
945Name_Not_Found:2007/06/09(土) 01:38:03 ID:???
>>943

[A]→ ←[B]→ ←[C]
1 2 3 4

1をクリックすると[B] までスクロールし、
2をクリックすると[A] までスクロールし、
3をクリックすると[C] までスクロールし、
4をクリックすると[B] までスクロールするスクリプトを作りたいのです。

[A]と[B]と[C]の間はそれぞれ600ピクセルです。

一度1をクリックしてしまうと、ブラウザを更新させないとスクロールされないのです。
これを更新せずに何度でも出来るようにしたいということです。
よろしくお願いいたします。
946Name_Not_Found:2007/06/09(土) 01:42:56 ID:???
思いっきりズレてますね・・・。
1,2,3,4は矢印のことです。
947Name_Not_Found:2007/06/09(土) 01:47:41 ID:???
>>945
BからAに行くためにはaの値を減らなきゃいけないのにその処理ないけど…?
948Name_Not_Found:2007/06/09(土) 01:51:22 ID:???
それらのスクリプトは別に用意しています。
1をクリックしたAからBまでの話での質問です。
何度も出来るようにしたいのです。
よろしくお願いいたします。
949Name_Not_Found:2007/06/09(土) 02:02:04 ID:???
>>948
あぁ、それなら最後にa=0に戻したら?
ちなみにsetTimeoutがその位置だと、clearしない限り無限にループするよ?
なるべく変えないとするとこれでいいんじゃね?
if ( a < 600 ) {
a = a+150;
window.scroll(a,0);
setTimeout("SCLL1()",5);
} else if (a == 600) {
a = 0;
}

自分でalert入れたりして動きみるようにした方がいいよ
950Name_Not_Found:2007/06/09(土) 02:39:31 ID:???
>>949
ありがとうございました。
おかげさまで問題が解決できました。
感謝です。
951929:2007/06/09(土) 03:24:03 ID:???
>>931
何かの保証のあるやり方をお教え下さいますようお願いします
952Name_Not_Found:2007/06/09(土) 23:16:21 ID:???
>>951
とりあえずidをそのまま使うのはよろしくないから
document.getElementByIdを使ったらどうだろうか?
953Name_Not_Found:2007/06/10(日) 03:34:00 ID:???
リンクボタン押すと子画面として別ウィンドウが開いて、
子画面内の処理が終わると子画面を閉じ親画面にフォーカスが戻る、という処理があります。

ここで遷移が3画面に渡りかつ途中の画面が先に閉じられた場合、
つまり親画面⇒子画面⇒孫画面 から 子画面が閉じられ
親画面⇒  ⇒孫画面 となった状態、において、
孫画面の処理終了で孫画面が閉じ親画面にフォーカスが戻る、という処理は可能でしょうか。

わかりづらい説明で申し訳ないですが、皆様お願いします。

954Name_Not_Found:2007/06/10(日) 07:16:41 ID:???
可能だよ。全部同一のドメイン(もしくはスクリプトで内部DOMを生成した)ならね
955Name_Not_Found:2007/06/10(日) 09:58:29 ID:???
>>954
回答ありがとうございます。なるほど、すべて同じドメインです。

具体的にどう実装すればよいか、教えて頂けるでしょうか。
956Name_Not_Found:2007/06/10(日) 11:42:19 ID:???
>>955
子画面が開いたときに
「window.saveopener = window.opener;」
を実行し、孫画面が開いた時に
「window.saveopener = window.opener.saveopener;」
を実行し、孫画面が閉じる前に
「window.saveopener.focus();」
を実行すればいいんじゃないかな。試してないけど。
957Name_Not_Found:2007/06/10(日) 11:58:13 ID:???
次スレは175超えたら。FAQ >>3 のQ6/A6だけどIEに限らず
HTMLではtableの内側にtbodyが存在(ただしtbodyタグは省略可)
だから「IEでは」→「DOM HTMLでは」と直したいがどうかな。
958Name_Not_Found:2007/06/10(日) 12:28:08 ID:???
>>956
その子画面のsaveopenerは単なる別名だから不要だな。

>>955
孫を開かずに、子でlocation.replace()した方が楽じゃなかろうか。

というか、現在のブラウザ制限では、全て同じドメイン(要するにスキーム及び3つ目の/まで同じ)なら、別窓を開くもっともらしい理由が見当たらない。
つまり、何か特別な効果・副作用を利用する特殊な目的が無いなら、現在では、わざわざ別窓を「JSで」開いたり操作したりする理由が見当たらない。
だから、このスレでは、そういう特殊で注目に値する理由が明記されない限り、別窓関連の質問は完全スルーすべきだろう。
959Name_Not_Found:2007/06/10(日) 18:48:09 ID:???
JavaScriptだけでbase64エンコードは可能ですか?
960Name_Not_Found:2007/06/10(日) 19:19:46 ID:???
可能です。
961Name_Not_Found:2007/06/10(日) 19:34:47 ID:???
base64の使用がわかってたらこういう質問はしないだろうなぁ
962Name_Not_Found:2007/06/10(日) 19:41:58 ID:???
963Name_Not_Found:2007/06/10(日) 19:57:39 ID:i60Mdo/R
JavaScriptで、PHPを実行させて出力結果を取得する方法はありませんか?
964Name_Not_Found:2007/06/10(日) 19:59:17 ID:???
今話題のAjax
965Name_Not_Found:2007/06/10(日) 20:00:26 ID:i60Mdo/R
>>964
つまり、XMLを取得するときに、その取得するXMLをPHPで書き出せばいいってこと?
966Name_Not_Found:2007/06/10(日) 20:00:56 ID:???
>>957
それが本当ならいいんじゃない?
967Name_Not_Found:2007/06/10(日) 20:25:47 ID:???
>>965
XMLじゃなくてもTXTでも普通に取得できるので
XMLが不要なら必要ない
968Name_Not_Found:2007/06/11(月) 00:45:59 ID:???
Javascript で NOSCRIPT要素の中を参照することは出来るでしょうか?
969Name_Not_Found:2007/06/11(月) 01:21:50 ID:???
>>968
二度と同じ質問が出ないように、いくつかのブラウザで試した結果を書いてくれ。
970Name_Not_Found:2007/06/11(月) 08:45:59 ID:???
971Name_Not_Found:2007/06/11(月) 09:25:35 ID:???
>>957
XHTML1.xではtbody要素がなくても良いから、DOM HTMLの制約というわけではない。

>>4
A10に関して、Safariは現状window!=document.defaultViewなので、
window.getComputedstyle()よりdocument.defaultView.getComputedStyle()を推す。

>>6
http://msdn.microsoft.com/workshop/author/dhtml/reference/dhtml_reference_entry.asp
http://msdn2.microsoft.com/en-us/library/ms533050.aspx

>>7
「JavaScriptでDOMを使う〜」のオブジェクト指向の解説は正直どうなんだろうか。
972Name_Not_Found:2007/06/11(月) 11:49:08 ID:???
>>971
じゃあ「XHTMLは除く」と付記。IEだけみたいな現状の書き方より
ましでしょう。もう975目前だし… defaultViewは入れましょか。
その新しいmsdn2は見やすくていいね。
973Name_Not_Found:2007/06/11(月) 14:21:41 ID:8+dHc4eH
↓をPHPでtxtに書き込み→表示させたいのですが、うまく取得されません。

document.write("<img src='http://hogehoge.jp/accesslog.php?ref=");
document.write(document.referrer+"&height=");
document.write(screen.height+"&width=");
document.write(screen.width+"' />");

どこか間違ってるでしょうか?
PHPへは$_GET[ref]で取得してます。
974Name_Not_Found:2007/06/11(月) 14:31:06 ID:???
なにを考えてるんだかさっぱりだ。
どこにPHPな部分があるんだ。
975Name_Not_Found:2007/06/11(月) 14:31:22 ID:???
>>971
> >>7
> 「JavaScriptでDOMを使う〜」のオブジェクト指向の解説は正直どうなんだろうか。

読んでみた。ここのテンプレに入れる水準じゃ無いな。外した方が良いと思う。
976Name_Not_Found:2007/06/11(月) 15:09:12 ID:???
げげっ! スレ建て規制されてるよorz だれか1レス目だけでいいから建てて!
+ JavaScript の質問用スレッド vol.57 +

━━━━━JavaScript質問スレ道場訓━━━━━
 一、礼節を重んじ常に努力精進すること
 一、ブラクラに打ち勝つ精神力を持つこと
 一、心身の優れたJavaScriptを学ぶこと
 一、雑草の如く生涯JavaScriptを貫くこと
 一、感謝と反省を忘れないこと
 以上
━━━━━━━━━━━━━━━━━━━━━━

このスレに書き込むことが許されるものは以下のとおり
・テンプレ/FAQ/過去ログ/関連資料を読める者。とくに>>2-10は必須!!!
・JavaScriptとJavaの違いを理解する者
・スクリプトを組むための最低限のHTML・CSSを理解する者
・ユーザーに迷惑となるスクリプトを書かない者
・「初心者です」を振りかざさず、質問を分かる日本語で説明できる者
・対象環境や使用技術は質問者の裁量であることを理解する者
 (質問/回答時はなるべく環境明記。WinIE5.5/N6未満と希少ブラウザは必須!)

前スレ http://pc11.2ch.net/test/read.cgi/hp/1178526934/l50
[必読]過去スレ全集 http://web1.nazca.co.jp/macde/js2chlog/ (臨時)
[必読]ガイド http://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Guide
(GuideをReferenceに→Netscape版言語仕様。厳密な言語仕様はECMA-262.ed3)
FAQ・注意・過去ログ・仕様書・関連資料・関連スレ>>1-10
977Name_Not_Found:2007/06/11(月) 15:18:46 ID:???
+ JavaScript の質問用スレッド vol.57 +
http://pc11.2ch.net/test/read.cgi/hp/1181542658/
978Name_Not_Found:2007/06/11(月) 16:56:51 ID:???
>>977 ありがとう助かったよ〜。
979Name_Not_Found:2007/06/11(月) 21:59:32 ID:???
>>972,977
俺の書き方が悪かったが、

・Gecko、Opera、Safariはdocument.defaultView(DOM2 Views)を持っており、
このオブジェクトがViewCSS#getComputedStyle()を使える。
・Gecko、Operaではdocument.defaultView==windowだが、Safariはそうではない。

という意味でdocument.defaultView.getComputedStyle()を推した。

# WindowはW3C WDでAbstractViewを継承することになってはいるが、
# document.defaultView==windowであるという規定は、俺は知らない。
980Name_Not_Found:2007/06/11(月) 23:32:33 ID:???
うーん早とちりスマソ。だからFAQに書けくそのままの形で提案してくれたら
一番安全なんだけどなー。だったら「Geckoでは…」の旧版が正しかった
ってことだなー。
981Name_Not_Found