リンクポップアップ(リッチテキスト領域のハイパーリンクボタンをクリックすると開き、リンク先のコンポーネントやurl /mailtoなどを選択できるようにするもの)にTridion 2011(GA)GUI拡張機能を実装しています。 )。
このポップアップ内でコンポーネントが選択または更新されるポイントにフックして、選択したコンポーネントのスキーマに基づいてデータをロードできるようにします。問題は、コンポーネントuriを含むhtml入力フィールドが無効になっていることです(値はセレクターによってのみ変更できるため)。これにより、changeイベントが発生しなくなっていると思います。
私の拡張機能jsには次のものがありますが、コンポーネントを選択/更新しても関数は呼び出されず、http/mailtoリンクを変更した場合にのみ呼び出されます
$evt.addEventHandler($("#FieldUrl"), "change", onFieldUrlChanged);
function onFieldUrlChanged()
{
alert("url changed to: " + $("#FieldUrl").value);
}
うまくいく他のイベントはありますか?それ以外の場合、閉じているブラウズポップアップにフックする方法はありますか?
アップデート
フランクの提案に従って、[アイテムの選択]ポップアップでイベントにフックしようとしています。参照ボタンのイベントハンドラーをclick
追加しました。これにより、ポップアップのイベントハンドラーが追加されます。私は使用したいと思っていましたがinsert
、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としてエラーが発生します(そして、今示したように、ロードイベントが機能しないため、ロードを待つ方法がわかりません!)。