用javascript等价物替换样式标记
HTML页面的头部有一个内联块,如下所示:用javascript等价物替换样式标记,javascript,html,css,Javascript,Html,Css,HTML页面的头部有一个内联块,如下所示: <style type="text/css"> body {font-size: 1.2em} </style> 正文{字体大小:1.2em} 这将在加载页面时立即设置正文字体大小 我想用更具动态性但仍然在客户端的东西来代替它 我如何使用JavaScript来设置这样一种样式,在呈现页面时立即可用并可见?Body.onload太晚了。我需要一个与此样式块等效的样式块,但要使用JavaScript。这个怎么样。我想你不能
<style type="text/css">
body {font-size: 1.2em}
</style>
正文{字体大小:1.2em}
这将在加载页面时立即设置正文字体大小
我想用更具动态性但仍然在客户端的东西来代替它
我如何使用JavaScript来设置这样一种样式,在呈现页面时立即可用并可见?Body.onload太晚了。我需要一个与此样式块等效的样式块,但要使用JavaScript。这个怎么样。我想你不能直接插入CSS
<p id="myCSS"></p>
<script><!--
document.getElementById("myCSS").outerHTML=[
'<style type="text/css">'
,'body { font-size: 1em; line-height: 1.5em }'
,'<\/style>'].join('\r');
-->
</script>
请注意,一些CSS设置很难恢复到原来的设置。使用css值
unset
可以做到这一点,但IE不支持它。在这种情况下,也许“尝试并出错”是最好的选择。答案是在内联脚本块中使用document.head.innerHTML+=添加表示样式块和样式的HTML。这将在创建DOM的脚本标记之后立即添加到DOM中。对包含字体大小的HTML模板使用反勾号会使它变得更容易,尽管最后我不得不支持IE11,所以反勾号被去掉了
解决方案:
<script>
var fontSize = //font size retrieved here;
document.head.innerHTML += "<style type=\"text/css\"> \nbody { font-size: ".concat(fontSize, "em } \n</style>");
</script>
var fontSize=//此处检索到的字体大小;
document.head.innerHTML+=“\n正文{font size:”.concat(fontSize,“em}\n”);
定义“更动态”。您希望什么影响此大小?用于防止JS代码被服务器过滤掉。如果他们没有,你可以删除
,我从来没有听说过服务器过滤JS代码只是因为它没有包含在HTML注释中……事实上,我遇到过一个:移动站点“pixnet.net”。我必须粘贴这段代码来定制我的手机CSS。它们清理非CDN的
和
以及
。