如何在qooxdoo中动态加载CSS文件
How to load CSS file in qooxdoo dynamically
是否有一个特殊的 qooxdoo class 可以像 qx.util.DynamicScriptLoader
动态加载 JavaScript 文件那样动态加载 CSS 文件?
例如,取决于用户选择他想使用什么地图,应用程序加载特定的 JavaScript 和 CSS 文件。我可以通过 qx.util.DynamicScriptLoader
class 获取 .js
文件,但是对于 css 我使用 Manifest.json
文件中的 externalResources
部分,它总是加载样式文件(是我对吗?)。
包含 css 文件的动态可能性,例如在 class 的构造函数中,像这样使用 qx.bom.Stylesheet.includeFile
:
qx.bom.Stylesheet.includeFile("https://myserver.com/my.css");
通过这种方式,我已经成功地为 packages/frameworks 构建了完全动态的包装器,其中所有外部资源仅在包装器 class 实例化上与 qx.util.DynamicScriptLoader
.
一起加载
如果 css 文件在您的项目资源中,您必须调用 qx.util.ResourceManager.getInstance().toUri()
资源名称,然后将其输入 qx.bom.Stylesheet.includeFile
.
假设您在 resource/myframework/my.css
的项目中有一个 css 文件,您必须首先在包装器 class 中创建一个像这样的 @asset
提示:
/*
* @asset(myframework/my.css)
*/
之后,例如在您调用的构造函数中:
qx.bom.Stylesheet.includeFile(qx.util.ResourceManager.getInstance().toUri(
"resource/myframework/my.css"
));
为了避免多次加载 css 文件,我添加了一个静态 class 成员 CSS_INCLUDED
到包装器 class,初始化为 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 文件。
是否有一个特殊的 qooxdoo class 可以像 qx.util.DynamicScriptLoader
动态加载 JavaScript 文件那样动态加载 CSS 文件?
例如,取决于用户选择他想使用什么地图,应用程序加载特定的 JavaScript 和 CSS 文件。我可以通过 qx.util.DynamicScriptLoader
class 获取 .js
文件,但是对于 css 我使用 Manifest.json
文件中的 externalResources
部分,它总是加载样式文件(是我对吗?)。
包含 css 文件的动态可能性,例如在 class 的构造函数中,像这样使用 qx.bom.Stylesheet.includeFile
:
qx.bom.Stylesheet.includeFile("https://myserver.com/my.css");
通过这种方式,我已经成功地为 packages/frameworks 构建了完全动态的包装器,其中所有外部资源仅在包装器 class 实例化上与 qx.util.DynamicScriptLoader
.
如果 css 文件在您的项目资源中,您必须调用 qx.util.ResourceManager.getInstance().toUri()
资源名称,然后将其输入 qx.bom.Stylesheet.includeFile
.
假设您在 resource/myframework/my.css
的项目中有一个 css 文件,您必须首先在包装器 class 中创建一个像这样的 @asset
提示:
/*
* @asset(myframework/my.css)
*/
之后,例如在您调用的构造函数中:
qx.bom.Stylesheet.includeFile(qx.util.ResourceManager.getInstance().toUri(
"resource/myframework/my.css"
));
为了避免多次加载 css 文件,我添加了一个静态 class 成员 CSS_INCLUDED
到包装器 class,初始化为 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 文件。