Экс-холст для динамично созданных элементов холста

Это кажется, что ADO/доступ идеально подходит для Ваших потребностей. Это испеклось в стек MS, хорошо закаленный, и многопользовательский.

можно программно создать DB как так:

Dim catalog as New ADOX.Catalog
Catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\server\path\to\db.mdb")

можно тогда использовать стандартные методы ADO.NET для взаимодействия с базой данных.

6
задан user192318 28 October 2009 в 06:00
поделиться

3 ответа

Из документация :

Если вы создали свой холст элемент динамически не будет метод getContext добавлен в элемент. Чтобы он заработал, вам нужно вызовите initElement на Объект G_vmlCanvasManager.

var el = document.createElement('canvas');
G_vmlCanvasManager.initElement(el);
var ctx = el.getContext('2d');
13
ответ дан 8 December 2019 в 04:30
поделиться

I append it to the document before calling initElement and it works for ie8, chrome, and ff. Took me a while to figure it out.

var foo = document.getElementById("targetElementID");
var canvas = document.createElement('canvas');
canvas.setAttribute("width", 620);
canvas.setAttribute("height", 310);
canvas.setAttribute("class", "mapping");
foo.appendChild(canvas);
canvas = G_vmlCanvasManager.initElement(canvas);
8
ответ дан 8 December 2019 в 04:30
поделиться

Я думаю, что нашел уловку. IE не знает, что такое «холст», поэтому, когда вы создаете элемент холста с помощью javascript, он не работает.

Я видел и другие примеры, делающие это для создания своего холста:

var el = document.createElement('canvas');//this doesn't work in IE

Таким образом, уловка состоит в том, чтобы просто обмануть IE, создав что-то легальное и вместо этого вызывая инициализацию холста.

Я использовал jquery, чтобы выполнить ajax GET для этого блока html, который затем вставил в DOM:

<div id="canvasholder">
    <canvas id="mycanvas" width="1024" height="768" style="width:1024px;height:768px"></canvas>
</div>

В javascript после завершения вызова ajax и вставки HTML я выполняю инициализацию холста. Это просто интересный фрагмент из моей функции инициализации.

...
canvas = $('#mycanvas').get(0);//get dom element from jquery
if(!canvas.getContext)//function doesn't exist yet
{
//we're in IE if we reach this block
//otherwise getContext already exists
$('#canvasholder').empty();
//add #mycanvas as a div instead of a canvas
//you could use document.createElement('div') instead of jquery
$('#canvasholder').append(
    '<div id="mycanvas" width="1024" height="768"></div>');
canvas = $('#mycanvas').get(0);
if(typeof G_vmlCanvasManager  != 'undefined' )
{
    canvas = G_vmlCanvasManager.initElement(canvas);
}
}
//now you're set up to draw!
context = canvas.getContext("2d");
...

Теперь это работает и в Firefox, и в IE7.

4
ответ дан 8 December 2019 в 04:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: