| この記事の要点 |
|
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 要素 — 画像表示
子ページ
子ページはありません
同階層のページ
- 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 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Git pushした変更の取消し|revert・履歴変更と保護の注意点 2026-10-15 23:49:01
- Gitでローカルを戻す前に|reset・restoreの違いと退避範囲 2026-10-15 23:49:01
- Git rebaseの使い方|対象範囲・競合解決・pushの判断 2026-10-15 22:50:59
- Git pullの使い方|取込み先・ff-only・競合とstashの注意点 2026-10-15 22:50:59
- Git pushの使い方|送信先・タグ・force-with-leaseの条件 2026-10-15 22:12:47
- Git remoteの設定・確認・削除|SSH URLとfetch/pushの違い 2026-10-15 22:12:47
- Gitリモートリポジトリの作成|初回push・既存履歴・mirrorの注意 2026-10-15 15:48:16
- Gitのuser.name・user.email設定|local/global・確認と過去履歴の注意 2026-10-15 15:30:07
- LinuxにGitをインストール|配布元・初期設定・TLSと認証の確認 2026-10-15 15:30:06
- Git導入と初回push|Linuxサーバー・Windows/macOS・SSH設定 2026-10-15 14:51:54
- Db2のCREATE INDEX|索引定義・INCLUDEと実行計画の確認 2026-10-15 14:10:22
- Db2の自動採番|IDENTITY・ID取得とRESTARTの注意点 2026-10-15 14:10:22
- 【DB2】特定スキーマの全テーブルの全カラム情報を取得する方法 2026-10-15 13:53:15
- Db2のシーケンスとIDENTITYの違い|採番とカタログの確認SQL 2026-10-15 13:53:15
- Db2で複数カラムをUPDATEする方法|SET・WHEREと更新前の値 2026-10-15 13:53:15