【问题标题】:Remove button added by Workflow on View删除工作流在视图上添加的按钮
【发布时间】:2017-01-18 09:13:33
【问题描述】:

我想问是否可以在记录的查看模式下隐藏由工作流添加的按钮。工作流程已锁定,因此无法停用该操作。

我正在尝试使用用户事件脚本 beforeLoad 在记录的查看模式下调用客户端脚本。代码是这样的:

带有 form.setScript 的用户事件脚本。

//User Event Script
function callClientScript(type, form) {
    if (type == 'view') {
        form.setScript('customscript_client_script');
    }
}

id 的客户端:customscript_client_script:

//Client Script
function removeButton() {
    document.getElementById('HTML Id of button to hide').style.display = 'none';
}

很遗憾,这不起作用。我已经研究过,我发现的所有示例都使用一个按钮来绑定客户端脚本,以便在单击时运行。他们在用户事件脚本中添加了这行代码:

form.addButton('custpage_my_button', 'Button Test', 'removeButton()');

我对此进行了测试,它工作正常。但是,我需要在页面加载后自动运行“removeButton()”函数。

【问题讨论】:

  • 客户端脚本是否在 pageInit 上运行?如果没有,那就试试吧。
  • @AdolfoGarza 您好,客户端脚本未部署。实际上,它不需要基于我的研究。但是,我仍然尝试将函数放入 pageInit 中,但仍然无法正常工作。感谢您的评论。
  • 如果您从 UserEvent 调用它,则不需要,但如果您仅使用客户端脚本,则需要。尝试不使用 Userevent。
  • 没关系,客户端脚本不在视图模式下运行。您需要使用表单注入代码。

标签: netsuite suitescript


【解决方案1】:

要实现这一点,您需要对 DOM 进行一些黑客攻击。您需要使用在 beforeLoad 期间创建的 inlineHTML 正文字段注入 javascript,并将您的客户端脚本代码设置为默认值并由 <script> 标记包围。

Suitescript 2.0 中的类似内容:

var injectScriptField = form.addField({
        id : 'custpage_injectscript',
        type : UIMODULE.FieldType.INLINEHTML,
        label : 'Inject Script Field'
    });
injectScriptField.defaultValue = '<script>alert("Hello");</script>';

【讨论】:

  • 嘿@AdolfoGarza,这成功了!非常感谢。我不知道我可以用 inlineHTML 做到这一点。只是好奇,这个字段是默认隐藏的吗?因为我在交易的任何地方都找不到它。另外要补充的是,我尝试将字段设置为隐藏,但由于某种原因,它不起作用。再次感谢!
  • 我不认为该字段是隐藏的,您至少应该能够看到标签。也许它是在“自定义”选项卡下加载的。
猜你喜欢
  • 2018-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多