Расширенный поиск в Netsuite

Когда вы передаете строку разметки в $, она анализируется как HTML, используя свойство innerHTML браузера на

(или другой подходящий контейнер для особых случаев, таких как ). innerHTML не может анализировать SVG или другой не-HTML-контент, и даже если бы он не мог сказать, что должен был находиться в пространстве имен SVG.

innerHTML ] недоступно в SVGElement - это свойство только HTMLElement. В настоящее время нет свойства innerSVG или другого способа (*) для анализа содержимого в SVGElement. По этой причине вам следует использовать методы типа DOM. jQuery не дает вам легкий доступ к методам, поддерживающим имена, необходимые для создания элементов SVG. Действительно, jQuery не предназначен для использования с SVG вообще, и многие операции могут завершиться неудачно.

HTML5 обещает позволить вам использовать без xmlns внутри обычного HTML (text/html) документа в будущее. Но это всего лишь взлом для анализатора (**), содержимое SVG по-прежнему будет SVGElements в пространстве имен SVG, а не HTMLElements, поэтому вы не сможете использовать innerHTML, даже если они выглядят как часть HTML-документа.

Однако для современных браузеров вы должны использовать HTML-код X (должным образом исполненный как application/xhtml+xml; сохранить с расширением .xhtml для локального тестирования ), чтобы заставить SVG работать вообще. (В любом случае это имеет смысл: SVG - это стандарт, основанный на стандартах XML). Это означает, что вам придется избегать символов < внутри вашего блока сценариев (или заключить в раздел CDATA) и включить XHTML xmlns. Пример:




    
    

*: ну, есть DOM Level 3 LS parseWithContext , но поддержка браузера очень плохая. Изменить для добавления: однако, пока вы не можете вводить разметку в SVGElement, вы можете добавить новый SVGElement в HTMLElement с помощью innerHTML, а затем перенести его на желаемую цель. Скорее всего, это будет немного медленнее:


**: Я ненавижу то, как авторы HTML5, похоже, боятся XML и намерены использовать функции, основанные на XML, в жестоком беспорядке, который это HTML. XHTML решил эти проблемы много лет назад.

0
задан Arul Mani 22 January 2019 в 07:23
поделиться