我有一个Tridion 2011 Content Manager Explorer的扩展,我只想为特定的视图执行特定的JavaScript.
我使用以下JavaScript片段执行此操作:
var onDisplayStarted = function () {
$evt.removeEventHandler($display, "start", onDisplayStarted);
if ($display.getView().getId() == "PublishPopup") {
...
}
};
$evt.addEventHandler($display, "start", onDisplayStarted);
Run Code Online (Sandbox Code Playgroud)
此代码在过去运行良好,它肯定会在PublishPopup打开时触发并确保我的代码仅在该特定视图中执行.
但不幸的是,我有时会在加载以下内容时在JavaScript控制台中收到以下错误消息DashboardView:
未捕获的TypeError:对象#没有方法'getId'
该错误不会导致任何问题,很可能是因为Tridion的UI框架正确处理了事件处理程序中的错误.但我仍然不希望在JavaScript控制台中显示错误.
我理解如何检测getId方法是否存在:
if ($display.getView().getId && $display.getView().getId() == "PublishPopup") {
Run Code Online (Sandbox Code Playgroud)
但这只意味着代码永远不会执行.虽然它现在似乎工作得很好,但PublishPopup我宁愿知道处理这种类型的"我的代码应该在视图初始化后执行"的正确方法.
有谁知道更好的方法来处理这个?
tridion ×1