【问题标题】:How to get the content returned by link element ref="stylesheet"?如何获取链接元素 ref="stylesheet" 返回的内容?
【发布时间】:2019-07-18 03:01:30
【问题描述】:

假设我有这两种风格

<head>
  <title>My page</title>
  <link rel="stylesheet" type="text/css" href="styles.css">    
  <style>
    //style here ...
  </style>
</head>

为了获得我的风格的内容,我会做这样的事情:

var styleSheets = document.getElementsByTagName('style')[0].innerHTML;

如果我想获取发送到&lt;link&gt; 元素的内容怎么办?我想要在处理&lt;link rel="stylesheet" type="text/css" href="styles.css"&gt; 之后作为text 发送到页面的style

感谢您的帮助

【问题讨论】:

    标签: javascript css html


    【解决方案1】:

    你可以这样做:

    let rootStyle = document.documentElement.style;

    此外,如果您使用 CSS 变量,您可以通过以下方式获取和设置它们:

    let varname = rootStyle.getPropertyValue('--yourpropertyname')

    rootStyle.setProperty('--yourpropertyname', yourvaluehere);

    【讨论】:

    • 我不想获取样式的内容。我想要&lt;link href="" rel="stylesheet"&gt; 元素的内容。
    【解决方案2】:

    您可以尝试使用document.StyleSheets获取内容。

    它给你一个 StyleSheetList 对象。在浏览器控制台中玩它很有趣。

    // document.styleSheets (StyleSheetList)
    const mainCSS = document.styleSheets[0].cssRules; // (CSSRuleList) (I take the first link in this example)
    let mainCSSText = '';
    [...mainCSS].forEach(rule => mainCSSText += rule.cssText);
    
    console.log(mainCSSText)
    

    这里是一个读取 document.StyleSheets 的例子: codesandbox

    我在使用 cdn 链接 css 时遇到了一些问题。

    【讨论】:

    • 似乎StyleSheet(对象)没有cssTextcssRules 属性。
    • 可以,但不是直接。 document.styleSheets 为您提供一个列表(类似数组)。这就是为什么我使用 document.styleSheets[0] 来获取第一个链接元素。如果我了解您的需求,我不能 100% 确定。希望我的例子可以帮助到你:codesandbox.io/s/…
    猜你喜欢
    • 1970-01-01
    • 2015-04-26
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 2014-08-20
    • 1970-01-01
    相关资源
    最近更新 更多