(первоначально с https://github.com/w3c/webcomponents/issues/392, переехали сюда)
Я работаю над библиотекой (на http://infamous.io, по крайней мере сейчас), в которой я создание набора пользовательских элементов для рендеринга 3D-сцены. Библиотека регистрирует два элемента: [<motor-scene>](https://github.com/infamous/infamous/blob/master/src/motor-html/scene.js)
и <motor-node>
. . Библиотека зависит от этого document.registerElement
полифилла для неподдерживающих браузеров.
У меня есть небольшая проблема. Все работает нормально, когда я использую пользовательские элементы в <body>
приложения Meteor, но когда я пытаюсь сделать то же самое со статической HTML-страницей и сценариями, вручную включенными в <head>
, это не работает и не работает должным образом. Я не уверен, что я делаю что-то не так и чего-то не знаю о пользовательских элементах, или это проблема с API.
Чтобы увидеть рабочую демонстрацию, просто
git clone [email protected]:trusktr/site.git
cd site
git checkout infamous-motor-html # it's on this branch.
npm install
meteor # meteor is really easy to install, meteor.com
# visit localhost:3000
Результат выглядит так: бирюзовый и розовый элементы расположены в 3D-пространстве, как и ожидалось:
Теперь, если вы посмотрите в папку public
, вы увидите статическую версию в html-demo.html
. Вы можете открыть его прямо в браузере с помощью file://
или посетить localhost:3000/html-demo.html
во время работы приложения Meteor. Я перепроверил, и я считаю, что делаю то же самое, что и в версии Meteor, но я просто не могу получить ожидаемый результат, и это выглядит так:
Я не уверен, в чем проблема и почему это работает в версии Meteor (Meteor 1.3 компилирует код с помощью Babel) и не работает в статической версии (также скомпилированной с Babel через Webpack).
Я добавил console.logs
к методам createdCallback
, attachedCallback
и т. д. в вызовах registerElement
(например). Это показывает два разных порядка вывода в консоли.
Вывод для версии Meteor:
Вывод для статической версии:
Может ли быть проблема с порядком загрузки? Существуют ли какие-либо правила, когда следует вызывать registerElement
? Я попытался разместить статические скрипты в конце страницы, что меняет порядок вывода, но все равно отображает то же самое (сломанное, не похоже на версию Meteor).
Любые идеи? Есть ли что-то о пользовательских элементах, чего я не знаю? Почему статический пример не выглядит так же, как пример Meteor?
Примечание. Я получаю такое же непоследовательное поведение между Meteor и static при использовании WebReflection/document-register-element. полифилл, а когда нет.
registerElement
. Вы должны попробовать с простым примером. - person Supersharp   schedule 23.02.2016