启动脚本
说明
启动脚本里包含了五个钩子函数,分别是: onLoad
、onLeave
、onPageChange
、onLogin
、onLogout
、httpRequestInterceptor
用户可以在钩子函数里面加入要执行的 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 注意事项
- 钩子函数编辑好之后需要点击确定,才会保存成功,关闭弹窗不会自动保存。
- 编辑态保存好之后,需要刷新运行态页面才会生效。