我正在创建简单的自定义元素,我想从分离的文件中导入它。当它在同一个文件中时t
给出了正确的html元素,但当它在外部文件中时它是undefined
。这是我的index.html
文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<link rel="import" href="example-container.html">
</head>
<body>
<example-container></example-container>
</body>
</html>
example-container.html
:
<template id="example-container">
<style>
</style>
</template>
<script>
// Make sure you extend an existing HTMLElement prototype
var ExampleContainerProto = Object.create(HTMLElement.prototype);
//var t = document.querySelector('#example-container');
// Setup optional lifecycle callbacks
ExampleContainerProto.createdCallback = function() {
var t = document.querySelector('#example-container');
console.log(t);
};
var ExampleContainer = document.registerElement('example-container', {prototype: ExampleContainerProto});
</script>
我的另一种方法是在全局范围内定义t
,如下所示:
var t = document.querySelector('#wizard-container');
WizardContainerProto.createdCallback = function() {
console.log(t);
...
它工作正常,但我不想在全球范围内留下垃圾。
答案 0 :(得分:1)
使用导入时,全局document
对象引用父页面(index.html),而不是导入的页面(example-container.html)。您可以使用document.currentScript.ownerDocument
获取导入的文档。所以,看起来你正在查询错误的文档。
请参阅HTML5Rocks上的HTML Imports - #include for the web。