我正在链接弹出窗口上实现 Tridion 2011 (GA) GUI 扩展(当您单击富文本区域中的超链接按钮以使您能够选择要链接到的组件或 url/mailto 等时打开的那个。 )。
我想在此弹出窗口中选择或更新组件的位置,以便我可以根据所选组件的架构加载一些数据。问题是包含组件 uri 的 html 输入字段被禁用(因为该值只能由选择器更改),我认为这会阻止更改事件触发。
在我的扩展 js 中,我有以下内容,但是当我选择/更新组件时不会调用该函数,仅当我更改 http/mailto 链接时
$evt.addEventHandler($("#FieldUrl"), "change", onFieldUrlChanged);
function onFieldUrlChanged()
{
alert("url changed to: " + $("#FieldUrl").value);
}
是否有其他活动可行?否则,有什么方法可以挂钩正在关闭的浏览弹出窗口?
更新
按照弗兰克的建议,我试图在“选择项目”弹出窗口中加入事件。我现在为浏览按钮添加了一个事件处理程序click
,它又为弹出窗口添加了事件处理程序。我希望使用insert
or unload
,但是相当烦人的是,唯一似乎触发的是close
(仅当您不选择链接组件时才会发生,所以对我没有多大用处)。我的JS代码如下:
$evt.addEventHandler($("#BtnBrowse"), "click", onBtnBrowseClicked);
function onBtnBrowseClicked = function (event)
{
var popup = $display.getView().properties.ItemPopup;
$evt.addEventHandler(popup, "load", function () { alert('loaded'); });
$evt.addEventHandler(popup, "insert", function () { alert('insert'); });
$evt.addEventHandler(popup, "close", function () { alert('close'); });
$evt.addEventHandler(popup, "unload", function () { alert('unload'); });
}
使用控制台,我确实设法将一个click
事件挂钩到弹出窗口中的实际插入按钮中,如下所示:
$evt.addEventHandler($display.getView().properties.ItemPopup.properties.view.properties.controls.insertButton, "click", function () { alert('stone the crows'); });
但是,如果我在我的浏览单击事件处理程序中添加它,它会出错为$display.getView().properties.ItemPopup.properties.view
null,可能是因为弹出窗口尚未完全加载(如所示,加载事件不起作用,所以我不知道如何等待它加载!)。