XHTML1.1でのobject要素の操作方法

このQ&Aのポイント
  • XHTML1.0ではiframeを使用してリンク内のページを表示する方法がありましたが、XHTML1.1ではobject要素を使用することができます。
  • しかし、object要素ではリンククリックしても新しい窓で開かれてしまうため、以前のようなフレーム構造を再現することはできません。
  • JavaScriptを利用してフレーム構造を実現する方法を探しているが、知識や参考書が限られているため困っている。助言をいただけると幸いです。
回答を見る
  • ベストアンサー

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

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

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

  • ベストアンサー
  • n_a_o_11
  • ベストアンサー率76% (10/13)
回答No.9

外部サイトのflashやmovieは表示出来るので、 classidで外部サイトのhtmlが表示出来るかと 思たんだけど。 classidの載ってるサイトで、 IE6用なんて書いてあったけど、IE6も classidを使わなくても表示出来る。 <script> function changeObj(fname){ document.getElementById("objarea").innerHTML = ('<object data=" '+fname+' " type="text/html" width="80%" height="400"></object>'); } </script> <div id="objarea" style="position:absolute;left:100px;width:800px;height:400px"> <object data="0.html" type="text/html" width="800" height="400"> </object> </div> <div id="ul"> <li><a class="p1" href="#" onclick="changeObj('./1.html');">1.html</a> <li><a class="p2" href="#" onclick="changeObj('./2.html');">2.html</a> <li><a class="p3" href="#" onclick="changeObj('./3.html');">3.html</a> <li><a class="p4" href="#" onclick="changeObj('./4.html');">4.html</a> </div> cssで位置決めすれば、好きな所に配置出来るから。 http://www.geocities.jp/n_a_o11/obj.html

abacabu
質問者

お礼

度々ありがとうございました。私最近firefoxとかsafariとかダウンロードして使ってるんですが、そちらでは普通に外部(さっきのyahoo)も普通に見られました… 一体いつになったらIEはまともに対応するんでしょうか… 私の環境ではclassidのあのコードみたいなのを入れないと確か・・・ 無地画面だったようなきがします。 classid使ってやっと画面が出た(インラインは表示されていたが、真っ白画面から目的ページが表示)気します。色々とありがとうございました。

abacabu
質問者

補足

IE9ではしっかりpbject要素を普通に表示できるようになっている事を祈って この質問を締めたいと思います。ありがとうございました。

その他の回答 (8)

  • n_a_o_11
  • ベストアンサー率76% (10/13)
回答No.8

ご免間違えた。 http://www.geocities.jp/n_a_o11/obj2.html classidとpでやってみたけど、自分のIEで表示されない。

abacabu
質問者

お礼

外部はやはり表示出来ないのですね。 私の画面でもyahooは表示されなくて、1で赤2で黄色画面が表示され、 上記グラデーションをマウスオンするとその色に背景が変化しました。 あやふやな書き込みをしてしまいすいませんでした…

abacabu
質問者

補足

で、なんですが、その自分がアップロードしたページファイルだけを対象に、 その画面に出すにはオンクリックでやればよいということでしょうか? 非常に参考になりました!しかも私の求めていた情報です。 大変ありがとうございました。

  • n_a_o_11
  • ベストアンサー率76% (10/13)
回答No.7

classidでも外部のサイトは表示出来なかったけど。 XP IE8 其れで、下記で確認して見て。 http://www.geocities.jp/n_a_o11/obj.html アクセス時はOKWave Yahooと1.htmmlと2.html どのように見えるか。

abacabu
質問者

お礼

書き込みありがとうございます。すいません書くのを忘れていたのですが…一部補足ですが、objectを使ってこの方法だとアップロードで同一ディレクトリ内にある別のページ画面は読み込めますが全く違うサイトのページは読み込めません。 すいません、言い方が曖昧でした… ですが同一ディレクトリ内というか自分のページはちゃんと表示されます。

  • n_a_o_11
  • ベストアンサー率76% (10/13)
回答No.6

IEはobjectで外部サイトのページは表示出来ないよね。 IEはobject 内のdataの書き換えだけでchange出来ない。 他のブラウザはWINもMacも出来るけど。 IEの内部のページの変更は<object ~></object>を書き換える。 > object自体を、firefox、safari、opera
辺りですと表示出来ませんでした…
 > しかもIEでかつどこかのサイトに落ちていたclassidという属性の
 > 英語と数字の集まりを入力しないとIE8でも表示しませんでした classidでIE8で外部サイトのページを表示したと言う事? classidを使うと他のブラウザは表示出来なくなるよね。 もしclassidでIE8で外部サイトのページを表示したのならば、 ソースを見せてくれる?

abacabu
質問者

お礼

回答ありがとうございます。一応他人様の知識でですがここまではきました。 ちなみにclassidは不変です。替える必要は無いみたいです。 そのままで問題なかったので。 ここからさらに外部を…と思ってしまったのでかなり悩みました。 なかなかfremeの様には扱えないようですね…

abacabu
質問者

補足

自分なりに調べた結果他人様のサイトでこう言う物を見つけました <p> <!--[if IE]> <object type="text/html" classid="clsid:25336920-03F9-11CF-8FD0-00AA00686F13" data="./ph.html" width="285px" height="200px"> <p>non object</p> </object> <![endif]--> <!--[if !IE]> <--> <object type="text/html" data="./ph.html"> <p>non object</p> </object> <!--> <![endif]--> </p> これにて私のwin7IE8環境で外部データを只表示する事は出来ています。 逆に言うとfirefoxとかだとこのままだとなんだか表示されません。 重要なのが<p></p>とかで全体を囲う。あとはIE用のcassidです。 classid無いだけでさっぱり駄目です。さらにclassidあっても <p></p>で囲わないと表示されません。という状況です。

回答No.5

javascriptで外部のhtmlを読み込むことは出来ます。 が、しかし、所詮javascriptなので検索エンジンには、 外部のhtmlの内容は認識されません。 SEO的によろしくないということになります。 ですので少々文字量が多いからといって、 外部ファイルにして、javascriptで読み込むというのはいかがなものかと思います。 管理や更新の問題でやっぱ外部ファイルにしたいんだけど。というときは、 phpなどのサーバーサイド言語を使います。 サーバーサイド言語なら検索エンジンに認識されます。 一番手っ取り早いのは外部ファイル化しないでタブ化するのが楽。

abacabu
質問者

お礼

回答ありがとうございます。 なるほど、JavaScriptだとそういう弊害もあるんですね。 PHPですか。perlはちょっと勉強しようと思って参考書あるんですが そっちで頑張ってみます。 何となく色々な利用の可能性がobjectにはあるのかな?とおもって そうなら上手く使えるようになりたいと思って色々がんばっております。 ありがとうございました。 サーバーサイドでも色々調べてみます。

abacabu
質問者

補足

軽~く齧った程度ですが、HTML5ではJavaScriptとHTMLの組み合わせで将来的に色々な事が出来る様になるらしい…(曖昧ですいません)ので、 色々とJavaScriptで対処していく方向の方がよいのかな?とも思っていました。 FlashやSilverlightもJavaScriptで代替できるようになり、Flashなどが 要らなくなるらしいのです。まぁAdobeさんは大反対らしいんですが・・・ こんな話をネットでみたもので、ちょっと色々いじってみようかとおもっています。

回答No.4

こういう仕組みの時ってobjectタグって使わないと思うんですよね。 普通は「タブ切り替え」という仕組みを使います。 http://www.0yen-coding.com/js-demo/demo/css04.html

abacabu
質問者

お礼

何となくurl指定すると外部も行けそうな気もするんですがあくまで同一ページ内の記述の入れ替えだけですか?ほとんどJavaScriptの知識が無い物ですいません。回答ありがとうございました。

abacabu
質問者

補足

度々ありがとうございます。 なるほど…こういう方法があるのですね。 ですがその改変文字列がページ1枚分の量になった場合はやはり 無難にframeなどで別ページを読み込むのがベターなんですかね? それともこれって外部ページも出力できますか? 試せばいいんですが…どうでしょうか?

回答No.3

何を実現したいのかもう少しはっきりと説明してもらえますか? http://www.0yen-coding.com/test/object01/ こう言うことですか? -------------------------------------------------- ・Aをクリック →Aの内容が<object>...</object>の中に表示する。 ・Bをクリック →Bの内容が<object>...</object>の中に表示する。

abacabu
質問者

お礼

少々お礼が遅れて申し訳ありませんでした…様はそういう事が知りたいです。 target属性が使えないので、何を使うと実現できるのかがさっぱり分からなかったので、これはJavaSciptか?と安易ではありますが質問しております。 たった4,5日間、1日6時間位いじってもうへろへろです… 何となくarea属性を使うのかとかも考えましたが違う様な感じですし… 頭がおかしくなりそうです… タグの基本的な事を理解していない為に怒るのかもしれませんが… 出来ればもう少しよろしくお願い致します

abacabu
質問者

補足

そういう事です!!良くフレームレイアウトにある、メニューの画面と ディスプレイとして使う画面が有り、その2個の別の画面を メニュー側のリンクをクリックするとobject今まで出ていたページアドレスでなく 新しいリンクのアドレスを表示させる方法が知りたいです。 出来ればどのような方法で実現できるのか教えて下さい。

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.2
abacabu
質問者

お礼

またまたありがとうございます。 こちらの方は殆どのサイトのJavaScriptを質問前に試しましたが、結果、 フレーム要素ではなく、只ページ上にインライン要素としてスペースを作り、 別の情報、HTML、img、その他色々な物を出せるみたいですので、 今後はこう言う方面での使用が期待される物の様です。 やはり勉強でもして開発でもしないとむりなんですかね… 恐らくJavaScriptを使えば可能かと思ったもので。 やはりJavaScriptでDOM(というのがある位の知識です)を 操作する事により実現する可能性があると思います。 たぶん…ありがとうございました。 もうちょっとまってみます。 あ・・・私がIE8という環境なのが原因なんですかね?? とりあえず私の環境ですと、object自体を、firefox、safari、opera 辺りですと表示出来ませんでした… しかもIEでかつどこかのサイトに落ちていたclassidという属性の 英語と数字の集まりを入力しないとIE8でも表示しませんでした… この要素ってまだまだ使えないのでしょうか? …お礼なんだかなんだかよくわからなくなりました ありがとうございました

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.1
abacabu
質問者

お礼

回答ありがとうございます。 この検索で見る限りHTML5においてはa要素およびarea要素は無くならず、 target属性もiframeの有用性から廃止される可能性がまずない(予定)のようで わざわざobject要素で無理やり使用する事も無いようです。参考になりました。 ありがとうございます。

関連するQ&A

  • Object要素におけるname属性の利用について

    Object要素におけるname属性の利用について ある『ホームページ入門サイト』に下記の記述がありました。 ------------------------------ <object data="test.pdf" name="test"></object> <a href="test2.pdf" target="test">テスト2ページ</a> a要素のターゲットで、testを指定しています。これは、objectのnameに対応しています。このため、リンクをクリックすると表示内容がtest2.pdfに切り替わります。 ------------------------------ 実際に試してみると、Object要素の内容が切り替わらずに、 ブラウザの新しいタブに表示されてしまいます。 そこで、2つの疑問 Q1.Object要素の仕様が変わったから、そうなってしまったのか?   そうであれば、参照先を知りたい。 Q2.リンクのクリックで、Object要素の内容を変えるにはどうする? くわしいかたの回答をお待ちしております。

    • ベストアンサー
    • HTML
  • 一つのリンク(ボタン)での2つのリンク要素をもたす

    インラインフレームにリンク表示とページトップにあるインラインフレームへの リンクの2つのリンク要素をもたしたいのですが… 今、<a href="http://store.apple.com/jp" target="00iframe">として 00iframeにはApple Storeが反映されているんですが、 00iframeがページの上部で リンクテキストがページの下の方にあるので、 できれば<a href="http://store.apple.com/jp" target="00iframe">この動きと、 < a href="#top">が一緒にできる方法はないでしょうか・・・ よろしくお願い致します。

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

    以下のようなウェブページを作成しています。 iframe要素の代わりにObject要素を利用しようと思い、ウェブページ内にObject要素を設けて、別なウェブページを読み込んでいます。それぞれ「親」、「子」とします。「親」も「子」それぞれ別々なJavaScriptファイルでオブジェクトを持たせています。 いま、「子」から「親」の持つオブジェクトを利用しようと思っています。今回は仮に「obj」とします。objは「親」の中でグローバルにスコープされています。 iframeの時と同じように「window.parent.obj」で「親」の持つオブジェクトにアクセスしてみました。FirefoxやOperaではアクセスが成功し、「親」の持つオブジェクトにアクセスできました。やったね(^-^) しかしInternet Explorer7のデバッグ・コンソールには「"window.parent.obj"はNullまたはオブジェクトではありません」のエラーが出ます。 ループを使ってオブジェクト「window.parent」の内容を出力してみましたが、再帰的に3回繰り返しても「obj」は含んでいませんでした。 Internet Explorer7でも「親」のオブジェクトにアクセスする方法をご存知の方、ご教授願います。不可能な場合は不可能な旨、お伝えください。

  • XHTMLの素朴な疑問です。

    http://www.w3.org/TR/xhtml-basic/xhtml-link-1.modのコメントに"to make a link to a script (rel="script")"と書かれていますが、XHTMLでは基本的には、link要素を使ってJavaScriptも取り込むことができると考えても良いのでしょうか?

    • ベストアンサー
    • HTML
  • xhtmlでのリンク

    初心者ですm(__)m htmlの頃はHEAD内にリンクターゲットを_blankで指定して、ページ内のリンク先に、個別に「_blank」を入力する必要はありませんでした。 xhtmlではどうなんでしょうか?w3c基準に詳しい人お願いします。 xhtmlではリンク先に[_blank]を個別に入力するのがセオリーなんでしょうか?

    • ベストアンサー
    • HTML
  • 一つのボタンでページ移動iframeとリンクを開く

    divで分けたpage1とpage2で page1には <ul > <li><a href="http://www.apple.com/jp/"target="iframe1" >Apple</a></li> <li><a href="http://www.microsoft.com/japan/‎" target="iframe1">Microsoft</a></li> </ul> page2には <iframe name="iframe1"></iframe> page1の外部リンクをクリックした時に page2移動して、iframe内にHPを開く用にしたいのですが、できますか!? targetでpage2にリンクを開くのはできましたが ページの移動ができません。 例えば、javascriptでpage1の外部リンクは全て移動するとか。。。 ど素人なので、違う簡単な方法があれば教えてください。

  • XHTML-<Object>で埋め込んだファイルのリンク(js併用)が誤動する

    お世話になります。 html/css(下の)中級+js初級者です。 環境:MacOSX、Firefox、Safari、エディタ/ミミカキ(ビルダは使ってません。貧) CSSとobject(あと、ちょっとjs)を駆使してフレームなし、target タグ無しのXHTMLの仕様に近い(W3Cのチェックは通らないです)デザインを目指して組んだのですが、いざ他のマシン(Win XP Home)でwebから表示したらナビゲーション部分の埋め込みファイル: <object data="000-navi.html" type="text/html" width="170" height="600"></object> のリンクが親ウィンドウに開かず、ナビの狭いスペースに次のページが表示されてしまいます。MacからだとFireFoxでもSafariでも問題なく表示されるのですが、ラップトップのWin(XP Home)だと上述のような問題が発生します。jsの設定を変えると新ウィンドウで開く事は出来るのですが、これだとクリックのたびに新ウィンドウが出て散らかってしまいます。 今の所決め手になる解決法が見当たらず、かくなる上はナビ部分のコード全てを各ページに「直打ち」しなきゃダメなのかしらん、なんて思っています。(それはいや。) でも本当にこんな回りくどい方法しか無いんでしょうか? 以下のリンクからデモが見られます。自分のからMacだとOKで、Winだとダメです。私のWin環境のせい?? http://kinugosiigomadowff.arrow.jp/miscsc/goo20081226/000-oshiete-top.html W3C非推奨でも実装で動けば良いので、(X)HTML、CSS、jsの範疇で何か方法があればご教示ください。どうか宜しく。m(_ _)m れざ

    • ベストアンサー
    • HTML
  • 元ページのiframe内リンクから、ターゲット_blankで開いた別窓

    あるページがあり、そこにはiframeが設定されていたとします。そのiframe内にリンクがあり、それを押すと別窓が開きます。 その別窓の中にあるリンクを押すと、元ページ全体を別のURLに変更し、同時にその別窓も閉じるような事はできますでしょうか? ただ、前提としてiframeからのリンクはあくまでターゲット_blankです。javascriptは使いません。 現状では、別窓にjavascriptを記述し、元ページに変更を加えるようにしたのですが、どうしてもiframeの中が変わるだけになってしまいます。 良い方法はありませんか?

    • ベストアンサー
    • HTML
  • XHTMLで新規ウインドウを開くリンク

    XHTML 1.1 でサイトを作成しています。 1.1ではaタグの"target"が禁止になりましたが、新規ウインドウで開きたい場合は、JavaScriptしかないのでしょうか? JavaScriptで作成すると未対応やOFFにしているブラウザでリンクが反応しなくなると思うのですが…。 href属性にURLを指定しつつ、JavaScriptに対応しているブラウザはJavaScriptで新規ウインドウを開くようにするにはどうしたらよいのでしょうか?(なるべく未対応、OFFにも新規ウインドウで開かせたいですが、無理であれば同一ウインドウでもOK) また、何か別の方法がありましたらご教示してください。

    • ベストアンサー
    • HTML
  • Flashをxhtmlで表示するには

    Flashをxhtmlで表示するには http://www.onflow.jp/blog/archives/2005/09/flashxhtmlembed.html のページを見て <object data="fma.swf" width="720" height="200" type="application/x-shockwave-flash"> <param name="movie" value="fma.swf" /> </object> 上記を入れてみたのですが、flashはうまく表示されるのですが、当方IE6、IE7の環境だと「セキュリティ保護のため、コンピュータにアクセスできるアクティブコンテンツは表示されないよう、webブラウザで制限されています・・・」と情報バーが出てきます。 もちろん、コンテンツを許可すれば見れるのですが、情報バーを表示させないようにするには、ブラウザ側での設定でしか無理なのでしょうか? xhtml側で情報バーを無くす方法がありましたら教えてくださいませ。 また、リンク先にある http://www.onflow.jp/blog/archives/2006/04/20064activexief.html のページでのjavaを使うやり方も試してみましたが、情報バーは出てきてしまいます><