人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

HP作成に関する質問です。
Javascriptで、サブウインドウを
subWin.document.write()で書き出すように、
フレーム内のHTML情報を書き出す方法などありませんか?

なお、フレームの作成は以下のように行っております。
<iframe src="test#siori1" name="frame" ></iframe>


●質問者: harunoharuno
●カテゴリ:インターネット ウェブ制作
✍キーワード:Hp HTML JavaScript Write ウインドウ
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● susie-t
●50ポイント

name属性指定ではないのですが、id属性指定であれば以下で可能です。(要望と違っていたらすみません。)

<html>
<head>
<script>
function getIFrameDocument(aID){
 if (document.getElementById(aID).contentDocument){ 
 return document.getElementById(aID).contentDocument;
 } else {
 return document.frames[aID].document;
 }
}
</script>
</head>
<body>
<iframe src="test#siori1" id="frame"></iframe>
<script>
var frameDoc = getIFrameDocument('frame');
frameDoc.write("<html><head></head><body>aaa</body></html>");
frameDoc.close();
</script>
</body>
</html>

getIFrameDocument関数は指定idのIFrameのdocumentを返却します。IEとFirefoxで取得方法が違うので作成しています。

参考になれば幸いです。

ダミー:http://q.hatena.ne.jp/

◎質問者からの返答

回答ありがとうございます。教えていただいた方法で、

一応フレームに対する書き出しはできました。

ですが、あんまし細かい書式の指定とかはできないのですね。。。

frameDoc.write("<html><head></head><body>
ab
</body></html>");

とするとこけてしまいました。

もう少し、多くのタグに対応する書き出し方法などありましたらそれについても

教えていただきたく宜しくお願いします。

[追記]

そもそもの目的は

クリックするたびにYOUTBEの動画をはったHTMLを

書き出したかったのですが、それには向いていないのかもしれませんね。

リンクをクリックしたときに、

下記タグの????の部分をJavascriptで埋め込む方法とか

ありましたら、それでもかまいませんので宜しくお願いします。

<object width="425" height="350"><param name="movie" value="?????"></param><param name="wmode" value="transparent"></param><embed id="movie1" src="?????" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>


以下のコーディングで試してみましたが、失敗しました。

parent.frame.document.getElementById("movie1").src="??????"

parent.frame.document.getElementById("movie").value="??????"


2 ● studioes
●50ポイント

function ifwrite(){

document.getElementById('testframe').contentWindow.document.write('this is a test');

}

JavaScriptはこんな感じで・・・

<iframe src='sam2.html' id="testframe" name="frame" ></iframe>

<input type='button' onclick='ifwrite();' value='ボタン'>

みたいな感じでIDを付けて、こんな感じでどうでしょ?

http://q.hatena.ne.jp/

◎質問者からの返答

ab

のように細かいタグなどの設定はできないようですね。

クリックするたびにYOUTBEの動画をはったHTMLを

書き出したかったのですが、それには向いていないのかなぁ。

リンクをクリックしたときに、

下記タグの????の部分をJavascriptで埋め込む方法とか

ありましたら、それでもかまいませんので宜しくお願いします。

<object width="425" height="350"><param name="movie" value="?????"></param><param name="wmode" value="transparent"></param><embed id="movie1" src="?????" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>


以下のコーディングで試してみましたが、失敗しました。

parent.frame.document.getElementById("movie1").src="??????"

parent.frame.document.getElementById("movie").value="??????"


3 ● studioes
●50ポイント ベストアンサー

あの・・・

ダブルクォーテーションの文字列内でもそのままダブルクォーテーションでタグのパラメータ書いてません・・・?

IEでもOperaでも問題なくタグははき出せますが。

<pre>

document.getElementById('testframe').contentWindow.document.write('<table border="1"><td>a</td><td>b</td></table>');

document.getElementById('testframe').contentWindow.document.write("<table border='1'><td>a</td><td>b</td></table>");

document.getElementById('testframe').contentWindow.document.write("<table border=\"1\"><td>a</td><td>b</td></table>");

</pre>

いずれも動作しましたが。

http://q.hatena.ne.jp/

◎質問者からの返答

回答ありがとうございます。コピペし確認したところ正常動作を確認しました。おそらく、先ほど表示できなかったのはコーディングミスによるものだと思います。再度回答していただけたことに感謝します。


4 ● aside
●30ポイント

>とするとこけてしまいました。

「border="1"」を「border='1'」にするとおk

http://q.hatena.ne.jp/

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ