ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
object 要素とは
<object> は外部リソース(PDF・SVG・画像・動画・別 HTML ページ・かつての Flash など)を、HTML ページ内に汎用的に埋め込むための要素です。data 属性に URL を指定するだけで、ブラウザがコンテンツタイプを判別して適切に表示します。
基本構文
<object data="sample.pdf" type="application/pdf" width="600" height="400">
<p>PDF を表示できませんでした。<a href="sample.pdf">こちらからダウンロード</a></p>
</object>
開始タグと閉じタグの間に書いた内容はフォールバックで、ブラウザが当該リソースを表示できなかったときに代替表示されます。
主な属性
| 属性 | 意味 |
|---|---|
data | 埋め込むリソースの URL(必須に近い) |
type | MIME タイプ(application/pdf, image/svg+xml 等) |
width / height | 表示サイズ(px 推奨) |
name | フォーム送信時の名前(限定的) |
form | 関連付ける form 要素の id |
usemap | イメージマップとの関連付け |
用途別の例
PDF を埋め込む
<object data="/files/manual.pdf" type="application/pdf" width="100%" height="600">
<p>PDF を表示できない場合は <a href="/files/manual.pdf">ダウンロード</a> してください。</p>
</object>
モバイル Safari など PDF 表示に弱い環境ではフォールバックが効きます。
SVG を埋め込む(スクリプト操作可)
<object id="logo" data="/img/logo.svg" type="image/svg+xml" width="200" height="60"></object>
<script>
document.getElementById('logo').addEventListener('load', () => {
const svgDoc = document.getElementById('logo').contentDocument;
svgDoc.querySelectorAll('path').forEach(p => p.style.fill = 'crimson');
});
</script>
<img> で SVG を読み込むと中の DOM にアクセスできませんが、<object> なら contentDocument 経由で JS から操作できます。
別 HTML ページを埋め込む(iframe 代替)
<object data="/widgets/weather.html" type="text/html" width="300" height="200">
天気ウィジェットを表示できませんでした。
</object>
動画(非推奨:通常は video 要素を使う)
<object data="/movies/intro.mp4" type="video/mp4" width="640" height="360"></object>
<!-- 推奨: -->
<video src="/movies/intro.mp4" controls width="640" height="360"></video>
フォールバック表示の仕組み
ブラウザが指定した type に対応していない、リソース取得に失敗した、プラグインがインストールされていない、といったケースで、<object> の中身(子要素)が代わりに表示されます。
<object data="legacy.swf" type="application/x-shockwave-flash">
<param name="movie" value="legacy.swf">
<p>このコンテンツは Flash で作成されています。代わりに <a href="legacy.mp4">MP4 版</a> をご覧ください。</p>
</object>
<iframe> との違い
| 項目 | <object> | <iframe> |
|---|---|---|
| 主な用途 | PDF・SVG・画像・動画など多様 | 別 HTML ページの埋め込み |
| MIME 自動判別 | あり(type で明示も可) | なし(HTML 前提) |
| フォールバック | あり(タグ内に書ける) | なし(古くは <noframes>) |
| sandbox 属性 | なし | あり(信頼境界を作る) |
| SEO・アクセシビリティ | title 属性で補える | title 属性が標準的 |
別ページを安全に隔離して埋め込みたいなら <iframe> + sandbox、PDF や SVG を載せたいなら <object> という棲み分けが分かりやすいです。
<embed> との違い
<embed> も類似要素ですが、フォールバックを書けない点が大きな違いです。最初から代替表示を意識するなら <object> が無難です。
セキュリティと CSP
- 外部から埋め込むリソースは 同一オリジン以外なら CORS / X-Frame-Options を意識
- CSP では
object-srcディレクティブで埋め込み可能な origin を制限できる - 埋め込み先がスクリプトを含む HTML の場合、object はサンドボックスがないため信頼できるソースのみに限定する
# 例: object-src は self とホワイトリストの CDN のみ許可
Content-Security-Policy: object-src 'self' https://cdn.example.com;
アクセシビリティ
- フォールバックに代替テキストやダウンロードリンクを必ず入れる
- SVG ロゴなら
<title>要素を SVG 内に入れて読み上げ可能にする - PDF 埋め込みは画面リーダーで読みにくいので、外部リンクとして提供することも検討する
よくあるトラブル
| 症状 | 原因と対処 |
|---|---|
| PDF が表示されず空白 | type 指定漏れ / モバイル Safari など未対応。フォールバックの a タグでダウンロード可 |
| contentDocument が null | 異なるオリジンの SVG / HTML を読んでいる。Same-Origin Policy |
| SVG の中身を JS で触れない | <img> ではなく <object> か inline SVG を使う |
| レイアウトが意図しない | width/height 未指定。可能なら px、レスポンシブは aspect-ratio を併用 |
関連
- オブジェクト — 親カテゴリ
- iframe 要素 — 別ページ埋め込み
- embed 要素 — シンプルな埋め込み
- video / audio 要素 — 動画・音声
- img 要素 — 画像表示
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
- object要素
- param要素
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 Spring Frameworkのアノテーション一覧
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- PHP $_SERVERとは|DOCUMENT_ROOT・PHP_SELFなど主な要素 2026-08-07 17:15:57
- PHPでのファイルアップロード方法|multipart/form-dataと$_FILES 2026-08-07 17:15:57
- Scratchのアカウントの作り方|メールアドレスとユーザー名の登録手順 2026-08-07 17:15:57
- Bluetoothとは|仕組み・BLEとClassicの違い・用途 2026-08-07 17:15:57
- Spring Bootのテスト入門|@SpringBootTestとJUnitでの単体・結合テスト 2026-08-07 17:15:57
- djangoにおけるMVCアプリケーション実装例 2026-08-07 17:15:57
- インストール(eclipseプラグイン) 2026-08-07 17:15:56
- データベースとは?RDB / NoSQL / SQL の基礎 2026-08-07 17:15:56
- Scratch 作品の公開方法 2026-08-07 17:15:56
- インストール方法(Windows版) 2026-08-07 17:15:56
- 【PHPフレームワーク】Laravelの使い方 2026-08-07 17:15:56
- APIキー取得方法 2026-08-07 17:15:56
- Spring Frameworkの使い方 2026-08-07 17:15:56
- Java とは?言語仕様・JVM・主要フレームワーク一覧 2026-08-07 17:15:56
- Google OAuth 2.0 認証の実装方法 2026-08-07 17:15:56
コメントを削除してもよろしいでしょうか?