如何仅在查看模式下在NetSuite客户表单显示按钮?
解决NetSuite客户表单按钮仅在查看模式显示的问题
要让自定义按钮只在查看模式(View Mode)显示,核心是在脚本中精准判断页面加载模式,仅在符合条件时创建或显示按钮。以下分SuiteScript版本给出具体实现:
SuiteScript 2.x 实现方案
方案1:User Event脚本中按需添加按钮(推荐)
在beforeLoad事件里判断当前模式,只有查看模式下才创建按钮,从根源避免按钮在其他模式出现:
/** * @NApiVersion 2.x * @NScriptType UserEventScript */ define(['N/ui/serverWidget'], function(serverWidget) { function beforeLoad(context) { // 仅在查看模式执行按钮添加逻辑 if (context.type === context.UserEventType.VIEW) { const form = context.form; // 添加跳转按钮 form.addButton({ id: 'custpage_external_link_btn', label: '跳转至外部页面', functionName: 'redirectToExternalPage' }); // 关联处理跳转的客户端脚本 form.clientScriptModulePath = './external_redirect_client.js'; } } return { beforeLoad: beforeLoad }; });
对应的客户端脚本(external_redirect_client.js):
/** * @NApiVersion 2.x * @NScriptType ClientScript */ define([], function() { // 跳转逻辑函数 function redirectToExternalPage() { window.open('https://your-target-url.com', '_blank'); } return { redirectToExternalPage: redirectToExternalPage }; });
方案2:Client Script控制按钮显隐
如果按钮已通过其他方式添加,可在客户端脚本的pageInit事件中根据当前模式切换显示状态:
/** * @NApiVersion 2.x * @NScriptType ClientScript */ define(['N/currentRecord'], function(currentRecord) { function pageInit(context) { const rec = context.currentRecord; const btnElement = document.getElementById('custpage_external_link_btn'); // 仅在查看模式显示按钮,其他模式隐藏 if (rec.mode === 'view') { btnElement.style.display = 'inline-block'; } else { btnElement.style.display = 'none'; } } function redirectToExternalPage() { window.open('https://your-target-url.com', '_blank'); } return { pageInit: pageInit, redirectToExternalPage: redirectToExternalPage }; });
SuiteScript 1.x 实现方案
针对旧版脚本,在User Event的beforeLoad中判断模式:
/** * @NApiVersion 1.x * @NScriptType UserEventScript */ function beforeLoad(type, form, request) { // 仅在查看模式添加按钮 if (type === 'view') { form.addButton('custpage_external_link_btn', '跳转至外部页面', 'redirectToExternalPage()'); // 绑定客户端脚本(替换为你的脚本ID) form.setScript('customscript_external_redirect_client'); } } // 客户端脚本中的跳转函数 function redirectToExternalPage() { window.open('https://your-target-url.com', '_blank'); }
排查要点
- 确认脚本已部署到客户记录类型,且部署状态为「已启用」
- 检查按钮ID是否唯一,避免与系统或其他自定义按钮冲突
- 验证模式判断逻辑:SuiteScript 2.x用
context.UserEventType.VIEW,1.x直接用字符串'view' - 若用客户端脚本控制显隐,需确保按钮的DOM ID与脚本中一致(可通过浏览器开发者工具确认)
内容的提问来源于stack exchange,提问作者Jaime Espósito
相关产品推荐
相关产品推荐

