首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hyperHTML似乎没有调用(附加?)满载事件

hyperHTML似乎没有调用(附加?)满载事件
EN

Stack Overflow用户
提问于 2017-12-06 15:33:46
回答 1查看 138关注 0票数 0

我试图在使用JavaScript时动态地加载额外的hyperHTML。我已经把失败的范围缩小到了onload事件。

下面是一个最小的、完整的和可验证的示例:

代码语言:javascript
复制
class ScriptLoader extends hyperHTML.Component {
  onload(event) {
    notie.alert({ text: "notie loaded" });
  }
  render() {
    return this.html`
      <script
        src=https://unpkg.com/notie
        type=text/javascript
        async=false
        onload=${this}
      />
    `;
  }
}

hyperHTML.bind(document.body)`
  <h2>onload test (notie)</h2>
  ${new ScriptLoader}
`;
代码语言:javascript
复制
<script src="https://unpkg.com/hyperhtml@2.4.0/min.js"></script>

如您所见,即使正确插入了notie.alert,也不会调用script

这个过程在addEventListener('load',appendChild(中正确地使用了香草JS。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-06 16:00:49

更新这是Firefox的一个问题,它考虑通过innerHTML注入死亡节点脚本,即使是通过模板和导入之后。

这意味着问题不在onload本身,而是没有触发任何网络请求,这样onload就永远不会发生。

正如您现在可以在密码笔 eaxmple中验证的那样,它使用了我重写的完全相同的代码片段,部分是为了让我非常高兴地链接代码笔(火狐和Safari ),以及Chrome和Edge应该工作得很好。

代码语言:javascript
复制
hyperHTML.bind(document.body)`
  <h2>onload test (notie)</h2>
  ${new ScriptLoader}
`;

我保留旧编辑的一部分,只是让你,或任何其他读者,意识到一个小小的警告,JSX深情可能会过度使用。

有一件事你应该小心: hyperHTML不解析HTML,<script/>不是有效的HTML。

如果不定期关闭非空标记,就有可能找到不应该找到的节点,这超出了hyperHTML的能力,不幸的是,通常情况下,这是HTML的工作方式。

代码语言:javascript
复制
<p/><b>unexpected</b>

我理解在这个演示案例中,您必须这样做,否则解析会在页面中发出关闭脚本的抱怨,但请记住,您可以在必要时始终这样做:

代码语言:javascript
复制
`<script><\x2fscript>`
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47677973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档