• ベストアンサー

URLの取得について教えてください。

URLの取得について教えてください。 Javascript初心者です。 下記のようなことをしたいのです。 テキストエリアを作成し、ボタンクリックでURLを テキストエリアに書き込むことは可能なのでしょうか? location.hrefで現在のページを取得し表示させるJavaScriptは分かったのですが テキストエリアを作成し、そこに表示させることができるのかが分かりません。 どなたかご教授よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • zeff
  • ベストアンサー率69% (137/198)
回答No.4

フレームですかぁ。うーん、何故情報の出し惜しみをされるのか。 フレームは苦手だから知っていたら回答しなかったのに。 一度回答した責任上、こちらでも調べてみたらこんなのが見つかりました。 http://okwave.jp/qa/q5487401.html http://chaichan.web.infoseek.co.jp/qa5500/qa5775.htm それでやってみると、 <script type="text/javascript"> <!-- //LOAD時にも最初から表示させる //@cc_on window./*@if(@_jscript_version<=5.8) attachEvent('on'+ @else @*/ addEventListener(/*@end @*/ 'load',function(){ showIFrameURL(); }, false ); function showIFrameURL(){ var url = document.getElementById("url"); var hoge = document.getElementById("hoge");//iframeのID url.value = hoge.contentWindow.document.location.href; } //--> </script> </head> <body> <form name="f1" action="#"> <p> <input type="text" size="70" name="url" id="url" readonly> <input type="button" value="GET URL" onclick="showIFrameURL();"> </p> <iframe src="hogehoge.html" name="hoge" id="hoge" width="100%" height="90%"></iframe> </body> </html> そこに書かれてある通り、 (子フレームのURLが変わっても)ドメインが同じなら大丈夫でした。

その他の回答 (4)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.5

○全部のページが同じドメイン内にあるのが大前提です。 情報が小出しで、しかもフレームの定義と要素やscriptの配置があいまいで 想像ですが、...... 上下のフレームって、両方とも<iframe>の事で、 上のフレームにコンテンツをロードし、下のフレームにURLの入力フォームとボタン があるhtmlをロードし、親のjavascriptでコントロールするとしたら 親のhtml <html> <body> <iframe src="index.htm" name="hoge" id="hoge" width="100%" height="50%"></iframe> <iframe src="gomi.htm" name="fuga" id="fuga" width="100%" height="50%"></iframe> <script type="text/javascript"> //@cc_on window./*@if(@_jscript_version<=5.8) attachEvent('on'+ @else @*/ addEventListener(/*@end @*/ 'load',function(){ showIFrameURL(); }, false ); //下はおまけ、(iframeの中身が変わるたびに再セット) document.getElementById("hoge")./*@if(@_jscript_version<=5.8) attachEvent('on'+ @else @*/ addEventListener(/*@end @*/ 'load',function(){ showIFrameURL(); }, false ); function showIFrameURL(){ var url = document.getElementById("fuga").contentWindow.document.getElementById("url"); url.value = document.getElementById("hoge").contentWindow.document.location.href; } </script> </body> </html> gomi.htmlの中には、 <input type="text" size="70" name="url" id="url" readonly> <input type="button" value="GET URL" onclick="parent.showIFrameURL();"> がある前提です。 (※そもそもフレームセットだったりして)

  • zeff
  • ベストアンサー率69% (137/198)
回答No.3

#1さんが >要素を生成しないで、単に値をセットするだけなら >element.value = location.href; >だけですみますけれど… とおっしゃっているとおりです。 何故最初から表示させておけるか疑問に思われたのか。 <script type="text/javascript"> <!-- function showURL(btn){ var url = btn.form.elements["url"]; url.value = location.href; btn.disabled = true;//ボタンが押せるのは1回だけ } //--> </script> </head> <body> <form> <p> <input type="text" size="70" name="url" readonly> <input type="button" value="GET URL" onclick="showURL(this);"> </p> </body> </html>

Mylife_4171
質問者

補足

zeffさんありがとうございます。 上下のフレームで分けて、上のフレームにURL取得のJavascriptを設置して、 下のフレームで表示させているページのURLを取得したかったのです。 このため、最初から表示ではダメでした。 location.hrefでは、JavaScriptを設置した上のフレームのページを取得しますよね。 Zeffさんの作って頂いたコードを参考に、 分けた下のフレームのページURLを取得できるように調べてます。

  • zeff
  • ベストアンサー率69% (137/198)
回答No.2

ボタンを押すとその「前」にテキストエリア (1行みたいだからinput type="text"?) が現れる、とも読み取れますが。もしそうなら、 <script type="text/javascript"> <!-- function createFunc(btn){ var url = document.createElement("INPUT"); url.setAttribute('type','text'); url.setAttribute('size', '70'); url.setAttribute('value',location.href); if(btn.parentNode){ btn.parentNode.insertBefore(url, btn);//ボタンの前にURLを挿入 btn.disabled = true;//ボタンが押せるのは1回だけ } } //--> </script> </head> <body> <form> <p><input type="button" value="GET URL" onclick="createFunc(this);"></p> </body> </html>

Mylife_4171
質問者

補足

分かりにくい図を添付しましてすいません。 1行のテキストエリアがあって、テキストエリアの横に”GET URL”というボタンを設置します。 GET URLというボタンをクリックするとテキストエリアに現在のページ表示されるというものです。 Zeffさんは、クリック後にテキストエリアが表示されるようになっていますが 初めから表示させておくこもとも可能なのでしょうか?

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

添付の図の意味がよくわかりませんが、こういうこと? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html lang="ja"> <head><title>test</title> <meta http-equiv="Content-Script-Type" content="text/javascript"> <script type="text/javascript"> <!-- function sample(t) { //要素を作成 var e = document.createElement("textarea"); //値をセット e.value = location.href; //要素を追加 t.parentNode.appendChild(e); //ボタンを無効化 t.disabled = true; } //--> </script> </head> <body> <input type="button" onclick="sample(this)" value=" go "> </body> </html> 要素を生成しないで、単に値をセットするだけなら  element.value = location.href; だけですみますけれど…

Mylife_4171
質問者

補足

分かりにくい図を添付しましてすいません。 1行のテキストエリアがあって、テキストエリアの横に”GET URL”というボタンを設置します。 GET URLというボタンをクリックするとテキストエリアに現在のページ表示されるというものです。 fujillinさんも、クリック後にテキストエリアが表示されるようになっていますが 初めから表示させておくこもとも可能なのでしょうか?

関連するQ&A