canvasを作成して、そのcanvasを子要素に追加する方法
JavaScriptを使って書きます。
一例:
html
1<div id="canvas-wrapper"></div>
2<script>
3document.querySelector("#canvas-wrapper")
4 .append(
5 Object.assign( document.createElement("canvas"), {id:"canvas-id"} )
6 );
7</script>
canvas#canvas-id
が div#canvas-wrapper
の子要素として増えているはずです。
(ご質問に示された要件)
マークアップ文書に変化を与える方法は次の2つです。
- サーバー側で動的に書き上げ、ブラウザでは変化させない。(ガラケーのサイトなど)
- JavaScriptを使いDOM操作し、ブラウザ上で変化させる。(モダンなウェブサイト)
「html内で完結するできるのが好ましい」の意図がよくわかりませんが、動的にHTMLを書く方法は限られているので、自分の要件に合うものを選んで利用します。
※ ガラケーだけでなく、JavaScript が危険視されていた時代は、普通のウェブサイトもサーバー側でHTMLを書き上げて、CSSやGIFアニメだけで動的な表現を行っていました。
ちなみに、ご質問に示されている div[onload]
は、当方の環境(モダンブラウザ)では発火しませんでした。
以下、手元でテストしたコードです。
html
1<div onload="createCanvas()"></div>
2<script>
3function createCanvas() {
4 console.log("onload div element") // 不発
5}
6</script>
html
1<div id="test"></div>
2<script>
3 elm = document.createElement("div");
4 elm.onload= function(){
5 console.log("onload div element") // 不発
6 };
7 document.getElementById("test").appendChild( elm );
8</script>
ここに上で作成したcanvasを
上記テスト結果から、「Canvasは作成できない」ことが確認できます。
〜できるのが好ましいと感じた場合、実現できる/できないは、利用者の(ブラウザなど)実行環境次第です。
閲覧者の環境を想定して、テスト環境を用意し、確認する必要があります
(ブラウザの場合は開発者コンソールを開いた状態でリロードすると確認できます)。