- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在我的 index.html 中,我导入了一个带有模板、Shadow DOM 等的外部 HTML 文件。一个自定义 Web 组件。
//索引.html
...
<script src="//cdnjs.cloudflare.com/ajax/libs/polymer/0.3.4/platform.js"></script>
<link rel="import" href="/html-components/userlogin-header.html" >
<head>
<body>
<userlogin-header username="Test User"userimage="http://domain.com/img.jpg"></userlogin-header>
...
和另一个文件 userlogin-header.html:
//用户登录-header.html
<template id="userlogin-header">
<div class="imgbox">
<img src="" class="userimage">
</div>
<div class="userinfo">
<div class="name"><span class="username"></div>
</div>
</template>
<script>
var doc = this.document.currentScript.ownerDocument,
UserLoginProto = Object.create( HTMLElement.prototype );
UserLoginProto.createdCallback = function() {
var template = doc.querySelector( "#userlogin-header" ),
box = template.content.cloneNode( true );
this.shadow = this.createShadowRoot();
this.shadow.appendChild( box );
var username = this.shadow.querySelector( '.userinfo .username' );
username.innerHTML = ( this.getAttribute( 'username' ) || 'Unbekannt' );
var imageurl = this.shadow.querySelector( 'img.userimage' );
imageurl.src = 'https://secure.gravatar.com/avatar/' + this.getAttribute( 'userimage' ) + '1?s=40&d=http://s3-01.webmart.de/web/support_user.png';
};
var Xuserlogin = doc.registerElement( 'userlogin-header', { 'prototype' : UserLoginProto } );
</script>
问题是调用index.html出现如下错误
Uncaught TypeError: Cannot read property 'content' of null
如果我在我的 Chrome 中启用 HTML 导入,一切正常。但是后来我禁用了它并改用 platform.js 出现了这个错误。
这个问题有解决办法吗?我不想使用整个聚合物框架。
最佳答案
这是 this caveat 的症状的 polyfill。
In a native HTML Imports,
document.currentScript.ownerDocument
references the import document itself. In the polyfill usedocument._currentScript.ownerDocument
(note the underscore).
更改后,您还需要使用 document.registerElement 而不是 doc.registerElement。您想要注册该元素,使其对导入 文档可见,而不是导入文档可见。
var Xuserlogin = document.registerElement(...);
这是一个 working plunk .
关于javascript - HTMl 导入自己的 WebComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24783504/
我的 bower.json 中有这两个依赖项:Polymer/polymer#^2.6.0 和 webcomponents/webcomponentsjs#^v1.1.0。 在我的 index.htm
在我当前的项目中,我们正在根据 v1 规范构建 native Web 组件,我们目前正在webpack单个包 comp-webcomponents.js 中。 这是我们当前包的入口点文件: impor
我即将学习 vanilla js Web 组件。我可以成功渲染一些由网络组件生成的元素,现在我想给它一些设计并将其放在侧边栏中。但是我不确定这是网络组件还是只是设计问题,添加侧边栏后元素将不再显示。
来自链接qr-code.js我有下面的代码。 那我就不明白了,关于highlighted line (60) ,后缀:“已更改”是什么意思? attributeChangedCallback: {
假设我们有一个自定义元素以这种方式使用: .... 其中list-image以 slider 方式显示img标签。如果组件的用户插入带有 的 img 标签 document.q
运行与webcomponents.js相关的dart应用程序时,控制台中出现异常 一切都按预期运行,我应该忽略此异常吗? Failed to load resource: the server res
我正在尝试在我的项目中使用 PolymerElements,已导入所有库,但屏幕上没有任何内容(在 DOM 树的控制台中,所有元素都就位,因此它们目前不可见) . 你能告诉我我做错了什么吗? 这是我的
我正在尝试使用 Dart 动态添加多个 div。 div 包含一个自定义 Web 组件,我正在尝试传入一个变量。我希望能够指定 n 个变量,将它们传递给 n 个组件,然后将它们插入到 HTML 文档中
我创建了一个 WebComponent,并在其中为它创建了一个构造函数。运行时,这个构造函数似乎没有被调用,虽然其余的组件可以工作,但它们必须在我的自定义构造函数之外创建。这是我正在谈论的一个例子。
假设我有以下 html: 现在,假设这被解析为 DocumentFragment。现在,我将片段插入到文档中。这些自定义元素的attachedCallback
我尝试制作一个简单的网络组件(使用 webcomponents.js v 0.7.23)。该组件有一个方法 (setTitre())。如果我在启动时在我的 HTML 页面中调用此方法,Chrome 是
我正在尝试按照 https://www.webcomponents.org/polyfills/ 中的说明填充 Web 组件因为我希望我的示例应用程序可以在 Chrome 和 Firefox 上运行。
我正在开发一个小部件库,这样客户只需在 中导入一个 javascript 文件他们的文件。加载该文件后,用户应该能够使用从头部加载的单个脚本加载的自定义元素。 问题是我需要使用 WebCompone
在 MDN 文档中,我看到 WebComponents 可以实现的一个函数叫做 adoptedCallback。 MDN 文档指出: “当自定义元素移动到新文档时调用。” https://develo
在我的 index.html 中,我导入了一个带有模板、Shadow DOM 等的外部 HTML 文件。一个自定义 Web 组件。 //索引.html ... ... 和另一个文件 user
我正在尝试使用 :host 选择器在 WebComponent 中设置 width 和 height,但大小没有改变。这是组件的模板: :host { width: 100
我正在使用 vue.js 并使用 stencil.js 创建了一个网络组件。我不想将 webcomponent 发布到 npm,这就是为什么我只是将它包含在我的 vue 项目中的 src/assets
尝试使用 webcomponents 但遇到了一个我没有得到的错误。 标记很简单,应该可以工作。 2个文件,都是html文件。 错误标记在 上在控制台中标记。 感谢您的帮助。 附言。我正在运行 Go
我要create a custom tag with Kotlin包含默认内容。链接的示例工作正常,但我没有设法将一些默认内容(例如输入元素)添加到自定义标签。 我尝试了不同的方法,但到目前为止,我只
我正在尝试将我的 vue2 webcomponent 迁移到 vue3,但在我为生产创建构建时出现了问题。 我使用带有 --target wc 的 vue-cli 现在显示一条错误,指出 vue3 w
我是一名优秀的程序员,十分优秀!