首页 > 其他分享 >SAP UI5 应用如何加载自定义 Theme

SAP UI5 应用如何加载自定义 Theme

时间:2023-01-30 13:33:56浏览次数:34  
标签:http 自定义 URL theme Theme UI5 ui sap my

要加载外部自定义主题,开发人员可以通过在页面中静态声明或使用 Core.setThemeRoot() 方法来设置此主题。

这非常类似于对位于不同位置的 SAP UI5 库使用 registerModulePath()

下面是具体的操作步骤:

(1) 使用下面的代码告诉 SAP UI5 框架,我们自定义 theme 的地址。

sap.ui.getCore().setThemeRoot("my_theme", "http://url.to/the/root/dir");

SAPUI5 然后从该 URL 加载所有主题资源。 比如sap.ui.core库的 library.css文件,在上述代码执行之后,就变成:

http://url.to/the/root/dir/sap/ui/core/themes/my_theme/library.css

base directory 也可以通过 core.applyTheme(...) 方法的第二个参数指定。

如果 theme 的某些部分位于不同的位置,可以使用上面的调用来设置默认值,但通过在数组中将它们指定为第二个参数来覆盖特定库的主题位置:

sap.ui.getCore().setThemeRoot("my_theme", ["my.lib.one","my.lib.two"], "http://url.to/the/other/root/dir");

下面是不同的设置 theme 的实现方法:

(1) 在 SAPUI5 bootstrap script 的属性中使用与 JSON 字符串相同的对象结构:

<script id="sap-ui-bootstrap" 
	type="text/javascript"
	src="resources/sap-ui-core.js"
	data-sap-ui-theme-roots='{"my_theme" : "http://themes.org/ui5"}'>
</script>

(2) 通过 URL parameter 指定:

http://myserver.com/sap/myapp/?sap-ui-theme=my-theme@/sap/public/bc/themes/~client-111

(3) 通过全局配置对象指定。

将下列代码插入到 bootstrap 脚本之前:

<script type="text/javascript">
window["sap-ui-config"] = {
	themeRoots : {
		"my_preconfigured_theme" : "http://preconfig.com/ui5-themes",
		
		"my_second_preconfigured_theme" : {
			"" : "http://preconfig.com/ui5-themes",
			"sap.ui.core" : "http://core.com/ui5"
		}
	}
}
</script>

上面的代码达到的效果:

  • 从指定位置为所有库加载第一个主题。

  • 从指定位置为 sap.ui.core 库加载第二个主题。对于所有其他库,主题从默认位置加载。

通过 sap-ui-theme/sap-theme URL 参数配置带有 themeRoot URL 的主题时,存在一些出于安全方面考虑的限制。

默认情况下,与当前页面不同来源的绝对 URL 被禁止访问。路径段将相对于当前页面 origin 值进行解析。

根据 RFC 6454,为了允许通过 URL 参数使用某些 origin 来源,可以将 <meta> 标记添加到页面的 <head> 中:

<meta name="sap-allowedThemeOrigins" content="https://example.com">

有了上面的语句之后,我们就可以在 SAP UI5 url parameter 里,加载部署在另一个 url 上的 theme:

https://myserver.com/sap/myapp/?sap-theme=my_theme@https://example.com/custom-themes/

<meta> 标记中提供的来源必须包含与 URL 参数中提供的来源相同的协议、主机和端口。 多个允许的来源可以用逗号分隔。

通用通配符 * 也可用于允许所有来源。 然而,这应该只与其他安全机制结合使用,例如 CSP style-src 指令。不支持允许子域的通配符。

标签:http,自定义,URL,theme,Theme,UI5,ui,sap,my
From: https://www.cnblogs.com/sap-jerry/p/17075513.html

相关文章

  • Docker 容器添加自定义root ca
    比如如果我们基于了step-ca工具做为我们的ca机制,就会有不可信的问题,业务使用就特别不方便了,以下是一个参考配置实际上很简单就是使用update-ca-certificates更新信息参......
  • js实现自定义网络拓扑图-实战记录
    首先推荐工具库JTopo: jtopo一个好用的交互式HTML5图形库其他的看官方文档            三、基础讲解jtopo的核心对象有Stage、Layer、Canv......
  • SAP UI5 应用的标准 Theme 和自定义 Theme 的加载讨论
    SAPUI5应用的初始主题可以硬编码在应用程序中(在加载SAPUI5的引导程序的脚本标签中)或在加载SAPUI5之前定义的JS配置对象中,例如下面的例子:<scriptid="sap-ui-boots......
  • Abp报错:AbpException: No theme registered! Use AbpThemingOptions to register them
    因为要做一个极简的点网站,所以创建了一个“单层应用”的解决方案,然后移除了完全用不上的模块。最后运行,发现直接报错AbpException:Nothemeregistered!UseAbpThemingO......
  • redhat6 装机自定义LVM分区教程
     分区效果如下 ......
  • Android开发 自定义View_时钟
    前言自定义View实现时钟涉及到三角函数,如果你对三角函数不甚了解或者已经遗忘,请参考我的博客:圆与三角函数的公式与使用  这篇博客详细解释了三角函数公式与对应坐......
  • Table类:后台自定义条件筛选查询
    1、首先需要在控制器中定义开启变量,例如控制器:dayrui/App/Demo/Controllers/Admin/Home.php//数据表初始化protectedfunction_init($data){$this->......
  • vue中多行(单行)文本溢出才会出现提示的自定义指令
     //以下代码可以直接粘贴进自己的`.vue`文件中查看效果<template><divclass="parent"><h3>标题</h3><divclass="child"v-ellipsis="3">{{msg......
  • hexo-theme-tree
    Hexo主题Tree一个简洁的主题,主要功能是“树状导航”+“树状目录”,可选配“评论”和“阅读量”功能,支持基于搜索引擎的全站搜索。通过fancybox支持图片点击放大。......
  • django 自定义模板标签
    故事的背景比较复杂,框架用的django,后台用的simpleui,当我在往前端嵌入echarts的时候发现自定义标签返回的list里面的单引号进行了自动转义,变成了&#39; 具体可以参考:ht......