【发布时间】:2012-10-05 18:05:29
【问题描述】:
我有一个 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);
这段代码过去运行良好,它肯定会在PublishPopup 打开时触发,并确保我的代码仅在该特定视图中执行。
但不幸的是,在加载DashboardView 时,我有时会在 JavaScript 控制台中收到以下错误消息:
Uncaught TypeError: Object # has no method 'getId'
该错误不会导致任何问题,很可能是因为事件处理程序中的错误已由 Tridion 的 UI 框架正确处理。但我仍然希望在 JavaScript 控制台中不显示错误。
我了解如何检测getId方法是否存在:
if ($display.getView().getId && $display.getView().getId() == "PublishPopup") {
但这只是意味着代码永远不会执行。虽然它现在在PublishPopup 中似乎工作正常,但我宁愿知道处理这种类型的“我的代码应该在视图初始化后执行”序列的正确方法。
有没有人知道更好的处理方法?
【问题讨论】:
标签: tridion