• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[IE7]Object要素内から親ウィンドウの独自オブジェクトを参照したい)

[IE7]Object要素内から親ウィンドウの独自オブジェクトを参照したい

このQ&Aのポイント
  • IE7でObject要素内から親ウィンドウの独自オブジェクトにアクセスする方法を探しています。
  • FirefoxやOperaでは成功する方法がありますが、IE7ではエラーが出てしまいます。
  • 解決方法があれば教えていただきたいです。

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

  • ベストアンサー
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

まず、親Windowに名前を付ける。 子からwindow.openで次の機能を持つget.htmlを開く。 get.htmlはoyawin上のobjを取得してopenerに設定する。 こんな感じ。 親) <html> <head> <script type="text/javascript"> var obj="oyaobj"; function koset() { kowin.form2.text2.value=obj; } </script> </head> <body onload="window.name='oyawin'"> <object type="text/html" data="child.html" width="200" height="200" name="kowin"></object> </body> </html> 子) <html> <body> <form name="form2"> <input type="button" value="Click" onclick="window.open('get.html')"> <input type="text" name="text2"> </form> </body> </html> get.html) <html> <body> <script type="text/javascript"> window.open("javascript:koset()","oyawin"); window.close(); </script> </body> </html>

Mocchi113
質問者

補足

新しいwindowを作って、そこからアクセスする、ということですね。フレーム間でのオブジェクト操作は不可能(HTML 4.01 framesetだと可能)だけれど、windowオブジェクト間でオブジェクトを操作することは可能なので、それを利用するとい理解しました。 親ウィンドウのバックグラウンドで子ウィンドウを展開すれば見た目も問題ないかなと言う感じがしますね。どうもありがとうございます。 しかし、OBJECT要素内に読み込んだJavaScriptから親のJavaScriptにダイレクトにアクセスする方法はないのでしょうか?Internet Explorerでそれを実現する方法をご存知ありませんか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

私の知る限りないわ。 あったらこんな面倒なことしないわよ。

Mocchi113
質問者

お礼

> 私の知る限りないわ。 > あったらこんな面倒なことしないわよ。 そうですか。。。ではダイレクトにやる方法は諦めたほうがいいですね。 WINDOWオブジェクト間でやりとりしてみようと思います。 回答して下さったおふたかた、どうもありがとうございました。

Mocchi113
質問者

補足

すみません。おふたかたじゃないですね。。。 askaaskaさん、どうもありがとうございました!!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 親フレームのjQueryオブジェクトを使えるか?

    html(親html)上に別のhtml(子html)を<iframe>で表示しています。 親htmlではjQuery(v1.8.2)を使用しています。 子htmlでもjQueryを使いたいです。 単純に子htmlでjquery.jsを読み込めば良いですが、勉強のため以下のように親htmlのjQueryオブジェクトを使って実現してみました。 【子htmlのscript】 var $ = parent.jQuery; $(window).load(function() {   $("body", document).append( "hoge" ); }); これで見た目は正しく動作してますが、以下の不明点が出てきたので質問させて下さい。 【質問】 $(window).loadではなく$(document).readyを使った場合は"hoge"が追加されていませんでした。 <body>要素がまだ読み込めていないせいかとも思いましたが、documentの読み込み完了後に実行されているはずです。 なぜ"hoge"が追加されないのでしょう? このdocumentは親htmlのdocumentなのでしょうか? ただ、$("body").append( "hoge" )と書いた場合は親htmlに"hoge"が追加され、$("body", document).append( "hoge" )と書くことで子htmlに"hoge"が追加されるようなので、親htmlのdocumentではない気がします。 よろしくお願いします。

  • 新しく開いたウィンドウへの要素の挿入方法

    javaScriptのwindow.openを使ってウィンドウを開き そのウィンドウにhtmlタグを挿入するプログラムを作りたいのですが うまくいきません。 例えば以下のような場合だと id="parent"を持つ親タグの子要素として、appendChildメソッドを使用しimgタグを挿入出来ます    var img = document.createElement("img");    var parent = document.getElementById("parent");    parent.appendChild(img); しかしwindow.openで開いたウィンドウは親となるタグがありません。 まっさらなウィンドウに要素を挿入するにはどうすればいいんでしょうか? なかなかうまくいかず困っております。ぜひお詳しい方ご回答お願いします。

  • XHTML1.1に於いてのobject要素の操作

    WEBページ作成初心者?(独学ではや6年以上…)です。 ちょこっとJavaScriptを使ったページを作ってます。 余り意味は理解していません。こう言うのにはこれって感じです… 普通にXHTML1.0ですとiframeを使って、画面を作りだし、リンクをクリックすると リンク内のtarget指定によりiframe内に違う情報(ページの変更)を出せます。 これをXHTML1.1においてobject要素だけでは無理なようです。 (object要素に違うページは表示できますがリンククリックしても新しいwindowでしか出ません) これをJavaScriptを利用して、以前の様なフレーム構造を実現するコードを調べているのですが さっぱり見つける事が出来ません… かつ自分で開発する知識も無く、申し訳ないのですが、お知恵をお借りしたいと思い投稿しました。 色々別ページを操作するJavaScriptは調べて試してみたのですが、 何分知識と書籍が無く(中身を見ないと有益な情報かどうかわかりませんし、 田舎な物でこう言った専門的な参考書が殆ど売ってません…) どうかお知恵をお貸し下さい。お願い致します…

  • iframe子ページから親ページへのアクション

    iframe内(子ページ)の<input>をクリックすると、 親ページのアクションとして<a href="#wrap">●●●</a>の 「●●●」を押したときと同じアクションをしてほしいのです。。 <input type="submit" onclick="(function(){ window.parent.※※※※※(); }());" /> ↑みたいな感じで実現できるのでしょうか?(T_T)

    • ベストアンサー
    • HTML
  • 楽天市場内でiframeから親ページのscrollToの値を取得

    よろしくお願い致します。 現在、楽天市場のショップを構築しています。 やりたいことは、iframeで読み込んだ子ページからJavascriptで 親ページ(楽天のシステムで生成されたページ)のスクロール量を取得するというものです。 楽天市場はDOCTYPE宣言なし(互換モード)ですので iframeで読み込む子ページもそれに合わせています。 iframeで読み込む子ページの記述は以下です。 window.onload = function(){ var st = window.parent.document.body.scrollTop; alert(st); } 自作の親HTMLと上記と同じ子ページでサンプルを作ったら 問題なく動作しました。 ただ、楽天市場の中で実行するとアラートのウィンドウすら開きません。 parentがうまく動かないのかなと思ったんですが、 テストで window.onload = function(){ var st = window.parent.frames.length; alert(st); } とすると楽天市場内でもアラートのウィンドウが開きフレームの数を表示してくれます。 parentの問題ではないのでしょうか? 行き詰まってしまったので皆さんのお知恵を拝借させて下さい。 よろしくお願い致します。

  • iframeの中から親ページをスムーズスクロール

    タイトルどおり、iframeの中から親ページをスムーズスクロールしたいと考えています。 ヘッダに <script> $(function() { var topBtn = $('#toTop'); topBtn.click(function () { parent.$('body,html').animate({ scrollTop: 0 }, 500); return false; }); }); </script> 親ページには高さ3000ピクセルのiframeを作って、そこに読み込んでいる子ページ最下部に <div id="gotoTop"><a href="#top_page"><img src="_image/btn_top.jpg" alt="トップに戻る" /></a></div> と記述しています。 この状態で親ページをスムーズスクロールさせることができません。 事情があって、親ページ側にはスクリプトやタグを追加することができません。 親も子もおなじドメインにあります。 ["parent" $('body,html') animate]などのキーワードで検索した記事を参考に parent.$('body,html').animate を window.parent.$("body").animate や $('html, body', window.parent.document).animate に書き換えてみてもうまくいきませんでした。 どうかアドバイスをお願いいたします。

  • 自身の関数オブジェクトを参照するには?

    自身の関数オブジェクトを参照するには? 次のようなコードを書いてみました。(全角空白は半角インデントに置換してください) <p id="Target"><span><span><span><span><span><span>Hello, World!</span></span></span></span></span></span></p> <script type="text/javascript"> (function(){  function Hello(HTMLElement){   var firstChild = HTMLElement.firstChild;   var result;   switch(firstChild.nodeType){    case 1: // Element Node     result = Hello(firstChild); // 再帰呼び出し     break;    case 3: // Text Node     result = firstChild.nodeValue;     break;   }   return result;  }  var text = Hello(document.getElementById('Target'));  alert(text); // Hello, World! })(); </script> 再帰呼び出しの部分で "Hello" の文字列を使わない方法を模索しています。 # この場合、while を使えば再帰呼び出しを使わなくすることも出来ますが、実際のコードはかなり複雑で上手い方法を思いつきませんでした。 # 時間をかければ再帰呼び出しを使わないように修正することも出来るのでしょうが、今はさくっと再帰呼び出しで解決することを望んでいます。 具体的には、 result = this(firstChild); このように呼び出せるのが理想です。 (この場合のthis値は windowオブジェクト を参照するので、上記は期待通りに動作しません) this とオブジェクトを組み合わせる方法も考えましたが、肝心の "Hello" を省略できませんでした。 var obj = {}; obj.Hello = function(){ this.Hello(); }; 何か良い方法はないでしょうか?

  • [Smarty] register_objectでの配列の扱い

    register_objectメソッドでテンプレートファイルに渡した配列にアクセスする方法がわかりません。 //PHPファイル register_object('data', $obj, 'array') //tplファイル 配列arrayの第一データは、{obj->array[0]}です。 //エラー 配列arrayの第一データは、{obj->array.0}です。 //エラー Smartyマニュアルに、register_objectメソッドについて、 『それはとてもセキュアで、 登録されたオブジェクトはいくつかのメソッドやプロパティを制限する事が出来ます。 しかし繰り返しの処理やオブジェクトの配列への割り当て等の事が出来ません。』 とありますが、これはregister_objectメソッドを使ってオブジェクトを渡す場合、配列にはアクセスできないということなのでしょうか? もし、そうであればassignを使うしかないのでしょうか?register_objectで書くほうがスマートなので、可能であればそちらを使いたいと思っています。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 単独で開かれたiframeを親ページに表示したい

    ブログ記事(blog1.html、blog2.html、blog3.html)を親ページ(index.html)のiframeとして表示しています。 親ページを開いた際には、デフォルトで最も新しいブログblog3.htmlが表示されるようになっています。 ブログ記事が単独で開かれた場合には、 if (window == window.parent) { location.href = "./index.html"; により自動的に親ページに導くようにしていますが、その際に開かれたブログ記事を表示したいと思います。 当たり前ですが、現在はblog3が開かれてしまいます。 どのようにしたらいいでしょうか。 以下、現在確認中のサンプルスクリプトです。 ■親ページ■ <html lang="ja"> <head> <meta charset="UTF-8"> <title>index</title> </head> <body> <p>index.html</p> <iframe src="./blog3.html" frameborder="2" width="300" height="100"></iframe> <div id="result"></div> </body> </html> ■ブログ1■ <html lang="ja"> <head> <meta charset="UTF-8"> <title>blog1</title> </head> <body> <p>blog1.html</p> <script> // 単独で開かれている場合 if (window == window.parent) { location.href = "./index.html"; // iframeで開かれている場合 } else { } </script> </body> </html> ■ブログ3■ <html lang="ja"> <head> <meta charset="UTF-8"> <title>blog3</title> </head> <body> <p>blog3.html</p> <script> // 単独で開かれている場合 if (window == window.parent) { location.href = "./index.html"; // iframeで開かれている場合 } else { } </script> </body> </html>

  • 子要素のスクロールが親要素に伝播しないようにしたい

    スクロールバーを持つ子要素 と その親要素であるwindow があり、 子要素のスクロール位置が一番上にある状態で、上に向かってホイールスクロールすると親要素windowのスクロールバーが動いてしまいます。 また、その逆に 子要素のスクロール位置が一番下にある状態で、下に向かってホイールスクロールすると親要素windowのスクロールバーが動いてしまいます。 この挙動をやめたいのですがどのようにすればよいでしょうか。 具体的にはFacebookの右上(外側のサイドバーの上)にあるフレンドのアクティビティを表示している領域の様な動作にしたいです。 下記コードでは実現出来ませんでした。 $("#sample").on('scroll mousewheel', function(event) { event.stopPropagation(); }); ライブラリはjqueryを使っています。 よろしくお願いします。