在我的index.html中,我导入了一个带有模板、Shadow等的外部HTML文件,这是一个定制的web组件。
// index.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- file er.html:
// userlogin-header.html er.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来代替这个错误。
这个问题有什么解决办法吗?我不想使用整个聚合物框架。
发布于 2014-07-17 15:24:14
这是这个警告的一种症状。
在本机HTML中,
document.currentScript.ownerDocument引用导入文档本身。在“填充”中使用document._currentScript.ownerDocument(注意下划线)。
一旦您改变了它,您还需要使用document.registerElement而不是doc.registerElement。您希望注册元素,以便它对导入文档是可见的,而不是导入的文档。
var Xuserlogin = document.registerElement(...);这是一个工作压块。
https://stackoverflow.com/questions/24783504
复制相似问题