1

我想使用 HTML 导入,所以我创建了两个文件。
文件1:

<!DOCTYPE html>
<html>
<head>
    <style>
        div {
            height: 300px;
            width: 300px;
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

文件2:

<!DOCTYPE html>
<html>
<head>
    <link rel='import' href='test.html' id='LINK'>
    <script>
        var LINK = document.getElementById('LINK');
        var test = LINK.import;
        var content = document.importNode(test.content, true);
        document.body.appendChild(content);

    </script>
</head>
<body>        
</body>
</html>

当我执行 File2 时,我应该看到一个黄色方块,但我收到了这个错误:

Uncaught TypeError: Failed to execute 'importNode' on 'Document': parameter 1 is not of type 'Node'. at Import.html:8

当我将“测试”变量记录到控制台时,我得到了包含 File1 的文档,所以那里没问题。我只是不明白错误应该是什么意思以及为什么它不起作用。

4

1 回答 1

1

当你写:

var content = document.importNode(test.content, true);

...你认为这test是一个<template>元素。

所以在你导入的文档中,你应该有一个<template>元素。

测试.html:

<html>
<head>
    <style>
        div {
            height: 300px;
            width: 300px;
            background-color: yellow;
        }
    </style>
</head>
<body>
    <template><div></div></template>
</body>
</html>

在主文件中,使用querySelector()(或其他选择器函数)获取模板:

var LINK = document.getElementById('LINK');
var test = LINK.import.querySelector('template');
var content = document.importNode(test.content, true);
...
于 2017-07-09T17:29:30.927 回答