Skip to main content

启动脚本

说明

启动脚本里包含了五个钩子函数,分别是: onLoadonLeaveonPageChangeonLoginonLogouthttpRequestInterceptor

用户可以在钩子函数里面加入要执行的 JavaScript 脚本,点击启动脚本输入框之后弹出如下图所示的代码编辑器,注意,代码编辑器里面会默认将所支持的钩子函数注入,如果没有要执行的代码就不写,但是不要删除钩子函数或者修改钩子函数名,否则钩子函数不会执行

钩子函数说明

onLoad

应用加载之后的钩子函数,触发时机: 应用加载后立马执行。 预览态、运行时均支持。

系统初始化,添加一些事件或者 dom 元素的调整

下面的例子是应用初始化设置 dom 元素的属性值

参考案例:

{
"onLoad": "{
console.log('onload函数调用');
var link = document.querySelector('link[rel*=\"icon\"]');
link.href = '[http://10.88.36.190/extra/logo/logo.ico](http://10.88.36.190/extra/logo/logo.ico)';
}"
}

2.2 onLeave

应用关闭之前的钩子函数,触发时机: 应用关闭之前执行。预览态、运行时均支持。

2.3 onPageChange

切换页面之后触发的钩子函数,触发时机: 页面路由发生变化之后触发。预览态、运行时均支持。

按钮点击触发 iframe 刷新能力,可以在 onPageChange 钩子里面触发原生的 dom 事件

{"onLoad": "{}", "onLeave": "{}", "onPageChange": "{
console.log('onPageChange');
const refreshIframe = () => {
var iframe = document.querySelector(\"[code='Iframe_8I179']\");
if(iframe) {
var iframeSrc=iframe.src;
iframe.src = '';
iframe.src = iframeSrc;
}
};
var btn = document.querySelector(\"[code='Button_BT4Rb']\");
if(btn) {
btn.removeEventListener('click', refreshIframe);
btn.addEventListener('click', refreshIframe);
}
}","onLogin": "{}", "onLogout": "{}"}

2.4 onLogin

用户登录之后的钩子函数,触发时机: 用户登录成功之后触发。仅支持运行时。

2.5 onLogout

用户退出登录之后的钩子函数,触发时机: 用户退出登录成功之后触发。仅支持运行时。

2.6 httpRequestInterceptor

接口请求的拦截函数,触发时机:接口发送之前触发,仅支持运行时。

用法:

// http请求拦截的默认函数:
({config}) => {return config;}
// config为当前拦截接口的请求配置,默认不做任何修改,就直接返回
// 举个例子。对接口 /path/to/any 的请求头加字段 xxxx-key: xxxx-value,函数可能为
({config}) => {
if (config.url.endsWith('path/to/any')) {
config.headers = Object.assign({}, config.headers, { 'xxxx-key': 'xxxx-value' });
}
return config;
}

3 钩子函数调用 PageSdk 能力

启动脚本的运行环境注入了 PageSdk 变量,可以调用 PageSdk 提供的能力,比如触发微流等。PageSdk 里面提供的方法如下:

getAppMenu

updateEntityPkMap

getEntityPkMap

openPage

setRelateCurrentContext

getRelateCurrentContext

updateRelateCurrentContext

getPageContent

cleanOpenPage

initPage

setFieldAction

initMainControl

setMainControl

eventTwiceConfirm

initRelatePageControlList

appendRelatePageControlList

getRelatePageControlList

refreshPage

eventHandler

queryRecordList

getDataContainerContext

updateDataContainerContext

updatePageLoadContext

cleanPageLoadContext

checkPageCompShouldRender

showMessage

findDataContainerRef

getCurrentPagePkId

handleTriggerMicFlow

getMicroflowCustomParams

initPageCtx

属性:

pageCtx

relatePageView

4 注意事项

  1. 钩子函数编辑好之后需要点击确定,才会保存成功,关闭弹窗不会自动保存。
  2. 编辑态保存好之后,需要刷新运行态页面才会生效。