Je možné vytvořit HTML plátno bez prvku DOM?

Chtěl bych mít kontext plátna HTML, na který bych mohl malovat a číst mimo obrazovku (v tomto příkladu psaní textu a čtení vytvořeného tvaru, ale je to obecná otázka). Možná budu chtít použít plátno jako vyrovnávací paměť snímků mimo obrazovku.

Předpokládám, že bych mohl vytvořit skrytý prvek DOM, ale raději bych ho vytvořil z JavaScriptu (možná budu chtít vytvořit a zničit řadu pláten za běhu).

Je to možné?

Odpověď

Můžete vytvořit nový canvas prvek s document.createElement :

var canvas = document.createElement('canvas');

a pak z toho získat kontext. Jen se ujistěte, že jste nastavili width a height . Nemusíte přidávat plátno do stromu, aby fungovalo:

DEMO

Ale určitě musíte vytvořit ten uzel. Mohli byste pro to vytvořit funkci:

function createContext(width, height) {
    var canvas = document.createElement('canvas');
    canvas.width = width;
    canvas.height = height;
    return canvas.getContext("2d");
}

Ale tím moje kompetence končí... jestli dokážete nějak přenést kontext do jiného kontextu nebo na plátno, nevím...