1

A-Frame 内容在 FireFox 和 Safari 上呈现时不会在 Chrome 上呈现。

根据CodePen 这里 const { hyper, wire } = hyperHTML;

class Box extends hyper.Component {

  render() { return this.html`
    <a-scene>
        <a-box color="red" position="0 2 -5" rotation="0 45 45" scale="2 2 2"></a-box>
    </a-scene>
  `;
  }
}

document.body.appendChild(new Box().render());

我确定我遗漏了一些东西,相同的内容在所有浏览器(CodePen)中都呈现为静态 HTML。

<body>
  <a-scene>
    <a-box color="red" position="0 2 -5" rotation="0 45 45" scale="2 2 2"></a-box>
  </a-scene>
</body>
4

2 回答 2

1

更新:我已经强制修复了hyperHTML中的问题,即使它是关于 AFrame uaing Custom Elements V0。一旦 AFrame 迁移到 V1,我将放弃强制修复。

您的代码笔和我的代码笔现在都可以使用了。问候


我已经分叉了你的笔并编写了几乎相同的代码:

const { hyper } = hyperHTML;

class Box extends hyper.Component {
  render() { return this.html`
    <a-scene>
          <a-box color="red"
            position="0 2 -5"
            rotation="0 45 45"
            scale="2 2 2"></a-box>
        </a-scene>`;
  }
}

hyper(document.body)`${new Box}`;

但我不得不在最后添加一条非常难看的线:

// if you comment this out nothing works
document.body.innerHTML = document.body.innerHTML;

这是因为 AFrame 使用自定义元素 polyfill(实际上是我的),当它从模板节点克隆时,它似乎不会触发注册表。

一个 polyfill 已知问题,我从未能够重现,这可能是我正在寻找的用例。

不幸的是,现在 AFrame 组件似乎在处理 hyperHTML 时遇到了麻烦。

抱歉,我会尽快解决这个问题。

于 2017-10-18T19:01:27.997 回答
0

只是为了澄清误解,已经证实这不是一个 hyperHTML 错误。

编写以下内容

const scene = `<a-scene>
  <a-box color="red" position="0 2 -5" rotation="0 45 45" scale="2 2 2"></a-box>
</a-scene>`;

var template = document.createElement('template');
template.innerHTML = scene;
document.body.appendChild(template.content);

也会失败,除了 AFrame 之外不包含任何额外的库。

正在进行一项调查,但您应该注意的是,任何基于现代模板元素生成通用内容的库都将在 aframe 0.7 中失败,并且仅在 Chrome 中。

更新 AFrame 存储库中提交的错误

于 2017-10-20T18:40:25.033 回答