如何在 XPage 上删除 HTML beforePageLoad 元素
How do I remove HTML elements beforePageLoad on an XPage
我有一个 XPage,可根据用户角色用于编辑或阅读。现在我需要实现这个功能。解决方案非常简单 - 只需删除添加、编辑和其他 HTML 元素。问题是我只能执行 SSJS 代码,但不能在页面加载时执行 CSJS。当我尝试在 SSJS 中这样做 document.
时,它给了我一个可预测的异常 - document
没有被识别。我如何在页面加载时执行它?
不要尝试从呈现的页面中删除 HTML 元素。
使用 属性 "rendered" 来确定应根据用户权限呈现哪些控件。 ("Rendered" 表示创建并发送到浏览器。)
您可以在此处设置属性
或此处
在那里插入 SSJS 代码,它应该 return 真(= 可见)或假(= 不可见)。
页面加载顺序为(XPages 事件以粗体显示):
- XPage 上所有组件的服务器端映射和关联的自定义控件已加载到内存中
- beforePageLoad:开发人员的服务器端代码针对这些组件运行
- 服务器端组件根据计算或绑定到后端文档进行迭代和更新
- afterPageLoad:开发人员的服务器端代码针对这些组件运行
- beforeRenderResponse:开发人员的服务器端代码针对这些组件运行(使用此事件意味着它也在任何部分刷新期间处理)
- 渲染响应迭代组件并计算出 HTML 传递给浏览器
- afterRenderResponse:开发人员的服务器端代码针对组件运行
如您所见,SSJS 仅针对组件的服务器端映射运行,而不针对客户端 DOM。如果你想修改它,你可以使用 onClientLoad 但我认为它不会在部分刷新后运行。因此,您对 DOM 的修改可能会在部分刷新后丢失(您需要检查)。如果您希望对 DOM 元素的更改持续存在,有两个选项:
- 使用
dojo.behavior
。 jQuery可能有相应的调用可以使用。
- 在 Java 中编写渲染器以更改 HTML 为特定类型的组件输出。
听起来你的强项在客户端,所以前者可能是最好的选择。
我有一个 XPage,可根据用户角色用于编辑或阅读。现在我需要实现这个功能。解决方案非常简单 - 只需删除添加、编辑和其他 HTML 元素。问题是我只能执行 SSJS 代码,但不能在页面加载时执行 CSJS。当我尝试在 SSJS 中这样做 document.
时,它给了我一个可预测的异常 - document
没有被识别。我如何在页面加载时执行它?
不要尝试从呈现的页面中删除 HTML 元素。
使用 属性 "rendered" 来确定应根据用户权限呈现哪些控件。 ("Rendered" 表示创建并发送到浏览器。)
您可以在此处设置属性
或此处
在那里插入 SSJS 代码,它应该 return 真(= 可见)或假(= 不可见)。
页面加载顺序为(XPages 事件以粗体显示):
- XPage 上所有组件的服务器端映射和关联的自定义控件已加载到内存中
- beforePageLoad:开发人员的服务器端代码针对这些组件运行
- 服务器端组件根据计算或绑定到后端文档进行迭代和更新
- afterPageLoad:开发人员的服务器端代码针对这些组件运行
- beforeRenderResponse:开发人员的服务器端代码针对这些组件运行(使用此事件意味着它也在任何部分刷新期间处理)
- 渲染响应迭代组件并计算出 HTML 传递给浏览器
- afterRenderResponse:开发人员的服务器端代码针对组件运行
如您所见,SSJS 仅针对组件的服务器端映射运行,而不针对客户端 DOM。如果你想修改它,你可以使用 onClientLoad 但我认为它不会在部分刷新后运行。因此,您对 DOM 的修改可能会在部分刷新后丢失(您需要检查)。如果您希望对 DOM 元素的更改持续存在,有两个选项:
- 使用
dojo.behavior
。 jQuery可能有相应的调用可以使用。 - 在 Java 中编写渲染器以更改 HTML 为特定类型的组件输出。
听起来你的强项在客户端,所以前者可能是最好的选择。