微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 使用CSS返回元数据

我有一个CSS样式表,它在服务器上动态创建,并通过< link>返回.标签.是否可以使用此样式表返回任何元数据,我可以使用 JavaScript阅读?

(用例:我返回的样式表是几个较小的样式表.我希望我的JavaScript代码能够检测出哪些较小的代码.)

我考虑过为元素添加一些自定义属性

body {
  -my-custom-prop1:0;
  -my-custom-prop2:0;
}

但当我尝试阅读这些时:

window.getComputedStyle(document.body)['-my-custom-prop1']

他们没有回来.还有其他想法吗?

编辑:我最终采取了稍微不同的方法.而不是添加< link>而不是我发了一个AJAX请求获取样式表,并将其文本添加到< style>标签.这样我就可以使用HTTP响应头来包含元数据.当然,这不适用于跨域,例如< link>标签呢.

解决方法

See example of the following →

虽然我认为这种技术是不明智的,但我开发的是我已经测试过在Chrome,FF,Safari和IE8中工作的东西.

首先,我选择了用于存储元数据的list-style-image属性,因为它可以包含url()参数中的任何字符串,但在正文CSS中的任何正常情况下都不会使用.

然后我为getComputedStyle实现了一个常见的跨浏览器函数,因为并非所有浏览器都可以使用它.

然后我解析了返回属性以仅获取url(”)中的数据,从而产生以下函数

var getStyle = function(el,cssprop) {
    if (el.currentStyle) {
        return el.currentStyle[cssprop];
    } else if (document.defaultview && document.defaultview.getComputedStyle) {
        return document.defaultview.getComputedStyle(el,"")[cssprop];
    } else {
        return (el.style) ? el.style[cssprop] : 0;
    }
};

var pullCSSMeta = function() {
    var aMeta = getStyle(document.body,'listStyleImage').split('/'),Meta = aMeta[aMeta.length - 1];

    return decodeURIComponent(Meta.substr(0,Meta.length - 1).replace(/"$/,''));
};

如果您需要存储多条信息,可以使用逗号描述数据,甚至可以存储JSON字符串.我希望你有充分的理由想要这样做,因为我认为有更好的方法来存储元数据……但是你去了!

See example →

原文地址:https://www.jb51.cc/js/156601.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐