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


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

2 5

2 ответа:

Я думаю, что понял это. Шаг 1-это импорт пространства имен vml через javascript.

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

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

Вот образец с двумя овалами. Оба овала будут отображаться в режиме причуд, но синий овал будет не показывать в стандартном режиме.
<!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>

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