Как заставить VML работать в стандартном режиме?

Я хотел бы иметь возможность использовать объекты vml при рендеринге страницы в стандартном режиме, а не в режиме причуд. Я нашел фрагменты ответов, разбросанных вокруг, но не могу понять. Raphael каким-то образом справляется, но я не могу обратить его вспять, чтобы понять, что происходит. Любой базовый рабочий пример был бы великолепен.


person lincolnk    schedule 07.10.2010    source источник


Ответы (2)


Думаю, я разобрался. Шаг 1 — импорт пространства имен vml через javascript.

document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', "#default#VML");

Это заставило некоторые случайные образцы vml работать в режиме причуд, но не в стандартах. Ключевым моментом является то, что для элементов требуется единица измерения, в то время как режим причуд принимает px, если единица измерения не указана. Также формы должны быть стилизованы с помощью position:absolute;, хотя линии явно не нуждаются в этой части.

Вот пример с 2 овалами. Оба овала будут отображаться в необычном режиме, но синий овал не будет отображаться в стандартном режиме.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
    <script>
        document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', "#default#VML");
    </script>
    <v:oval style="width: 100; height: 50" fillcolor="blue"></v:oval>
    <v:oval style="position: absolute; width: 100px; height: 50px" fillcolor="green"></v:oval>
</body>
</html>
person lincolnk    schedule 08.10.2010

Почему бы вам просто не использовать Raphael вместо необработанного VML? Ребята из Raphael проделали большую работу, создав стандартную библиотеку, которая работает почти везде — используйте их тяжелую работу.

person KJ Saxena    schedule 07.10.2010
comment
У меня есть существующий проект с большим количеством vml, работающих в режиме причуд. Я хотел бы знать, что нужно для изменения режима страницы, а не для замены всех vml для вызовов raphael. - person lincolnk; 08.10.2010