- PR -

IFRAME内のElementへのアクセスについて

1
投稿者投稿内容
なめくじ
会議室デビュー日: 2003/02/20
投稿数: 11
投稿日時: 2008-10-20 14:00
いつもお世話になっております。
現在javascriptとiframeでAjaxモドキを作成しております。

iframe内にデータが書けなくて困っています。

[やりたいこと]
javascriptで作成したiframe内のTextタグへのアクセス

[構造]
original.aspx
+module.ascx(子フレームを作成する機能はココにある)
 +iframe.aspx
  +<input type='text' id='targetText' />

[環境]
VS2005
IE6

[ソース]
・orginal.aspxは略
------------------
・module.ascx
コード:

<script "略">
//onClickで呼ばれるメソッド
function showFrame(targetData){
var innerFrame = document.createElement("iframe");
innerFrame.id = "ifm";
innerFrame.src = "iframe.aspx";
document.getElementsByTagName("body").item(0).appendChild(innerFrame);
//↓メソッドがありませんとでます。
innerFrame.contentWindow.document.getElementById("targetText").value = "表示";
}
</script>


-------
・iframe.aspx
コード:
<input type='text' id='targetText' />



[試して不思議な事]
getElement系が使えなかったので以下の関数をmodule.ascxに作成しました。
しかし、alert(id);を外すと動作しません!不思議・・・^^;
コード:

function searchDomTree(leaf, targetId, dept){
var ret = null;
if (dept == null) dept = 1;
try{
var id = "";
if (targetId == null || targetId == "") {alert("targetId is null");return ret;}
if (leaf == null) {alert("leaf is null");return ret;}
try{id = leaf.id;var test = id;}catch(e){id = "";alert(e.description);}
alert(id);
if (id != null && id != "" && id == targetId) return leaf;

if (leaf.childNodes){
var str = "leaf.id:" + leaf.id + ",leaf.childNodes.length:" + leaf.childNodes.length;
for(var i = 0; i < leaf.childNodes.length; i++){
dept = dept + 1;
ret = searchDomTree(leaf.childNodes[i], targetId, dept);
if (ret != null) {
return ret;
}
}
}else{alert("leaf.childNodes is null");}
}catch (error){alert("searchDomTree\\\\n"+error.number + "\\\\n" + error.description);}
return ret;
}



長くてすいませんが、よろしくお願いします。

[ メッセージ編集済み 編集者: なめくじ 編集日時 2008-10-20 14:02 ]

[ メッセージ編集済み 編集者: なめくじ 編集日時 2008-10-20 14:02 ]

[ メッセージ編集済み 編集者: なめくじ 編集日時 2008-10-20 14:22 ]
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-10-20 14:44
ヒントだけ。

onreadystatechange

又は

onload


なめくじ
会議室デビュー日: 2003/02/20
投稿数: 11
投稿日時: 2008-10-20 15:12
ぴあちゃん様、ありがとうございます。
iframeが読み込まれるまでは動作しないのですね。

多分皆様困っているので、書いておきます。
コード:

function aa{ //iframeを作成したところ
if (document.all) {
// IEでのonload代用処理
innerFrame.onreadystatechange = function () {
if (this.readyState == "complete") {
setIframeData(innerFrame, txtId);
this.onreadystatechange = null;
}
}
} else {
iframe.onload = function () {
setIframeData(innerFrame, txtId);
}
}
}

function setIframeData(innerFrame, targetData){
innerFrame.contentWindow.document.getElementById("targetText").value = targetData;
}



参考サイト:
http://wiki.bit-hive.com/tomizoo/pg/JavaScript%20%A5%A4%A5%F3%A5%E9%A5%A4%A5%F3%A5%D5%A5%EC%A1%BC%A5%E0(iframe)%B4%D8%CF%A2

検索キーワード:
iframe内 アクセス データ

[ メッセージ編集済み 編集者: なめくじ 編集日時 2008-10-20 15:23 ]
1

スキルアップ/キャリアアップ(JOB@IT)