html5 模板标签:内容访问的回退
html5 template tag: fallback for content access
我在 webkit 浏览器 (JavaFX WebView 2.2) 中使用模板标签来存储我可以复制并附加到文档主要部分的元素。
但是,我无法使用 templateElement.content(HTML5 标准)访问其内容。相反,我使用 jQuery 通过选择器“#templateElement div”获取模板 TAG 内的元素。
似乎还没有完全支持模板标签(内部脚本也运行),虽然它的内容没有呈现。
我担心的是,当模板标签被支持时,获取其内容的方式将中断,我的页面将停止工作。
不管未来的实现如何变化,推荐的获取模板内容的方法是什么?
HTML:
<template id="templateElement">
<div>Clone Me!</div>
</template>
JavaScript:
function getContentsCurrent() {
var toBeCloned = $("#templateElement div")[0];
//append where needed...
}
function getContentsFuture() {
var toBeCloned = templateElement.content.getElementsByTagName("div")[0];
//append where needed...
}
编辑
我认为 jQuery 将无法自动处理此问题,即使在将来也是如此,因为模板 "innerHTML" 被特意路由到 content这样 DOM 就无法访问它(因此没有选择器会意外接触到它)。
您可以测试 content
特征之前是否存在:
function getContents() {
var toBeCloned;
if ( templateElement.content )
toBeCloned = templateElement.content.getElementsByTagName("div")[0];
else
toBeCloned = templateElement.querySelector("div");
//append where needed...
}
另一种方式:
var content = templateElement.content || templateElement
var toBeCloned = content.querySelector( "div" )
//...
我在 webkit 浏览器 (JavaFX WebView 2.2) 中使用模板标签来存储我可以复制并附加到文档主要部分的元素。
但是,我无法使用 templateElement.content(HTML5 标准)访问其内容。相反,我使用 jQuery 通过选择器“#templateElement div”获取模板 TAG 内的元素。
似乎还没有完全支持模板标签(内部脚本也运行),虽然它的内容没有呈现。
我担心的是,当模板标签被支持时,获取其内容的方式将中断,我的页面将停止工作。
不管未来的实现如何变化,推荐的获取模板内容的方法是什么?
HTML:
<template id="templateElement">
<div>Clone Me!</div>
</template>
JavaScript:
function getContentsCurrent() {
var toBeCloned = $("#templateElement div")[0];
//append where needed...
}
function getContentsFuture() {
var toBeCloned = templateElement.content.getElementsByTagName("div")[0];
//append where needed...
}
编辑
我认为 jQuery 将无法自动处理此问题,即使在将来也是如此,因为模板 "innerHTML" 被特意路由到 content这样 DOM 就无法访问它(因此没有选择器会意外接触到它)。
您可以测试 content
特征之前是否存在:
function getContents() {
var toBeCloned;
if ( templateElement.content )
toBeCloned = templateElement.content.getElementsByTagName("div")[0];
else
toBeCloned = templateElement.querySelector("div");
//append where needed...
}
另一种方式:
var content = templateElement.content || templateElement
var toBeCloned = content.querySelector( "div" )
//...