<textarea> внутри <foreignObject>обрабатывает, как и ожидалось, в Chrome, но не в Firefox - PullRequest
1 голос
/ 25 октября 2011

Я создаю текстовую область внутри постороннего объекта в SVG следующим образом:

var doc = document.getElementById("cover");
var foreign = document.createElementNS(svgNS,"foreignObject");
var textarea = document.createElementNS("http://www.w3.org/1999/xhtml","textarea");

foreign.setAttributeNS(null,"x",40);
foreign.setAttributeNS(null,"y",40);
foreign.setAttributeNS(null,"width",500);
foreign.setAttributeNS(null,"height",200);
doc.appendChild(foreign);

textarea.setAttributeNS(null,"xmlns","http://www.w3.org/2000/xmlns/");
textarea.textContent = "Text goes here.";
foreign.appendChild(textarea);

Это прекрасно работает в Chrome.Однако в Firefox я вообще не вижу текстовую область.Когда я проверяю с помощью Firebug, он существует, но Firefox принудительно установил статическое позиционирование на нем, и в зависимости от того, как я прокручиваю, подсвеченное поле не будет зависать над объектом на вкладке html, не обязательно даже внутри svg.Даже когда это так, я не вижу текстовую область.Что я могу сделать, чтобы исправить это в Firefox?Для справки я использую новейшие версии обоих браузеров (обновлено несколько часов назад).

1 Ответ

1 голос
/ 25 октября 2011

У меня работает , если я изменю эту строку:

textarea.setAttributeNS(null,"xmlns","http://www.w3.org/2000/xmlns/");

К этому:

textarea.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns","http://www.w3.org/2000/xmlns/");

Я думаю, что Firefox просто более строг в отношении пространств имен. Это может быть ошибкой, но это означает, что принято требовать http://www.w3.org/2000/xmlns/ для обработки DOM:

Префикс xmlns: был указан как синтаксическое устройство для объявления пространства имен, но сам не был связан ни с каким именем пространства имен спецификация пространств имен в январе 1999 года. Но в некоторых контекстах обработки, например DOM , все атрибуты XML полезно представлять как (пространство имен имя, местное имя) пары. Для этой цели имя пространства имен http://www.w3.org/2000/xmlns/ назначено.

...