是否有一个特殊的qooxdoo类来动态加载CSS文件,就像qx.util.DynamicScriptLoader
为JavaScript文件做的那样?
例如,取决于用户选择他想使用的地理地图,应用程序加载特定的JavaScript和CSS文件。我可以通过qx.util.DynamicScriptLoader
类获得.js
文件,但对于css,我在Manifest.json
文件中使用externalResources
部分,该文件总是加载样式文件(我对吗?)。
包含css文件的动态可能性,例如在类的构造函数中,使用qx.bom.Stylesheet.includeFile
如下:
qx.bom.Stylesheet.includeFile("https://myserver.com/my.css");
通过这种方式,我已经成功地为包/框架构建了完全动态的包装器,其中所有外部资源仅在包装器类实例化时与qx.util.DynamicScriptLoader
一起加载。
如果css文件在你的项目资源中,你必须在资源名上调用qx.util.ResourceManager.getInstance().toUri()
,然后将其输入qx.bom.Stylesheet.includeFile
。
假设你在resource/myframework/my.css
的项目中有一个css文件你必须首先在你的包装器类中创建一个@asset
提示:
/*
* @asset(myframework/my.css)
*/
及之后,例如在构造函数中调用:
qx.bom.Stylesheet.includeFile(qx.util.ResourceManager.getInstance().toUri(
"resource/myframework/my.css"
));
为了避免多次加载css文件,我在包装器类中添加了一个静态类成员CSS_INCLUDED
,初始化为false,然后在调用qx.bom.Stylesheet.includeFile
后设置为true,结果如下代码:if(my.wrapper.CSS_INCLUDED === false) {
qx.bom.Stylesheet.includeFile(qx.util.ResourceManager.getInstance().toUri(
"resource/myframework/my.css"
));
my.wrapper.CSS_INCLUDED = true;
}
这样以后的实例化就不会再加载css文件了。