Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создать тег object программно, почему-то не получается 
:(
    Опции темы
Се ля ви
Дата 1.6.2011, 09:47 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 5
Всего: 127



Приветствую, народ!

Вот код:
Код
var /** @type {HTMLObjectElement} */ obj = document.createElement('object');
obj.data = '/src-xml/canvas.svg';//setAttribute('data', '/src-xml/canvas.svg');
obj.type = 'image/svg+xml';//setAttribute('type', 'image/svg+xml');
obj.width = '502';//obj.setAttribute('width', '502');
obj.height = '502';//obj.setAttribute('height', '502');
alert(obj);
document.appendChild(obj);
Он - не работает ни в последнем Google Chrome, ни в FF4 (закомменченные варианты с setAttribute не работают так же). На последней строчке вылетает какой-то DOMException-3. При том, что в HTML-документ вставка
Код
<object
        data="/src-xml/canvas.svg"
        type="image/svg+xml"
        width="502"
        height="502">Чё-та ни то!!! :(((</object>
Работает нормально - по крайней мере в этих браузерах.

Не подскажете, в чём может быть дело? Очень нужно вставлять именно программно, поскольку IE до 9-ки не поддерживает SVG нормально (без плагина) и нужно будет по-этому распознавать - в каком мы браузере и вставлять либо SVG, либо VML - соответственно, нужно будет делать это программно...


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
Amphiluke
Дата 1.6.2011, 12:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 35
Всего: 112



Стесняюсь спросить…   smile 

Цитата(Се ля ви @  1.6.2011,  13:47 Найти цитируемый пост)
document.appendChild(obj);


почему так, а не так, скажем:

Код

document.body.appendChild(obj);


?
PM   Вверх
Котокобра
Дата 1.6.2011, 12:42 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 26.11.2009

Репутация: нет
Всего: 4



Amphiluke
+1
PM MAIL   Вверх
Се ля ви
Дата 1.6.2011, 15:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 5
Всего: 127



Мда, ступил. Спасибо, народ! smile))

P.S. Я этот вариант в числе прочих тоже пробовал, но там другая ошибка была и я подумал, что тоже лажа... Короче, всё пучком, разобрался.


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
Се ля ви
Дата 3.6.2011, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 5
Всего: 127



А ошибка, о которой я говорил выше, между тем, не исчезла. Мне удалось её обойти в моём конкретном случае, но вообще было бы неправильным о ней не написать. Я, честно говоря, даже не знаю, возможно ли в принципе её разрешить?..

Дело в том, что я создаю тег object для вставки SVG-файла. И не просто вставки SVG-файла, а ещё и для рисования на нём средствами JavaScript.

Для рисования мне нужно обращаться к элементу типа SVGSVGElement, который находится в свойстве contentDocument созданного таким образом и вставленного объекта:
Код
var /** @type {SVGSVGElement} */
    svgCanvas = obj.contentDocument.childNodes[1];

Именно в него потом можно appendChild`ить новые созданные SVG-элементы.

Так вот, если вызвать этот код сразу после создания объекта таким вот макаром, то он выдаёт ошибку. А если не сразу, а с небольшой задержкой - то всё норм. По-видимому, подгрузка документа в вновь созданный тег object происходит не сразу, а через некоторое время, а браузер, не дожидаясь этого, сразу же выполняет следующие за инструкцией добавления object`а скрипты параллельно с этим процессом.

Глюк воспроизводится в FF4 и Chrome11. В остальных браузерах пока не проверял, но думаю, что это - глюк общий...


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0575 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.