![](/img/trans.png)
[英]A javascript function returns different results in Chrome and Firefox
[英]Chrome and Firefox giving different results on JavaScript file import of CSS variable
Chrome 51结果
Firefox结果
test.js
(function(){
let template = `
<style>
@import url("css/test.css");
.test1{
height: 100px;
width: 100px;
color: #fff;
background-color: var(--main-bg-color,red);
}
</style>
<div class="test1">test</div>
<div class="test2">test2</div>
`;
class TestWidget extends HTMLElement{
createdCallback(){
this.createShadowRoot().innerHTML = template;
};
}
document.registerElement('test-widget',TestWidget);
})();
test.css
:root{
--main-bg-color: blue;
}
.test2{
background-color: green;
height: 100px;
width: 100px;
color: #fff;
}
test.html
<test-widget></test-widget>
为什么在两个不同的浏览器中结果不一样?
template
变量不是<template>
元素。
您可以创建一个<template>
元素,将<template>
元素的.innerHTML
设置为template
变量; 使用.importNode()
导入<template>
元素.content
,将导入的.content
附加到<test-widget>
元素的shadowRoot
另外,如果预期结果是要将样式应用到shadowRoot
host
,请在css
处用:host
替换为:root
; 包括关闭正斜杠/
.test2
元素<div class="test2">test2</div>
,其中Question处的js
中缺少。 虽然不能完全确定什么是实际的问题?
(function(){ let template = ` <style> /*@import url("css/test.css");*/ :host { --main-bg-color: blue; } .test2 { background-color: green; height: 100px; width: 100px; color: #fff; } .test { height: 100px; width: 100px; color: #fff; background-color: var(--main-bg-color,red); } </style> <div class="test">test</div> <div class="test1">test</div> <div class="test2">test2</div> `; class TestWidget extends HTMLElement{ createdCallback(){ var shadow = this.createShadowRoot(); var temp = document.createElement("template"); temp.innerHTML = template; var shadowContent = document.importNode(temp.content, true); shadow.appendChild(shadowContent); }; } document.registerElement("test-widget",TestWidget); })();
<test-widget></test-widget>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.