私のWebページには、カスタムコンテキストメニューから呼び出されると思われるエラーの報告方法が含まれていますより簡単に。 私が達成したいのは、コンテキストメニューが開いている要素の内容をエラーレポートの特定のフィールドに入力することです。JavaScript:カスタムコンテキストメニューからオブジェクトリファレンスを渡す方法
がfunction ReporterContext(p_menu, p_context, p_elem, p_prestage)
{
var l_listitem;
var l_link;
var l_text;
var l_lang = document.children[0].attributes['xml:lang'].value;
var l_section;
if(!p_prestage)
{
switch(p_context)
{
case 'link':
case 'ext-link':
l_section = 'link';
break;
default:
l_section = 'misc';
}
l_listitem = document.createElement('li');
l_link = document.createElement('a');
l_link.setAttribute('href', 'javascript:void(InvokeReporter());'); // Object reference supposed to be added here
l_text = document.createTextNode(err_outtext[l_section][l_lang]['report']);
l_link.appendChild(l_text);
l_listitem.appendChild(l_link);
p_menu.appendChild(l_listitem);
}
}
ページがロードされたときに、この機能は、全体のコンテキストメニューの魔法に結びついている
(それは次のとおりです。
さて、(エラーの記者を呼び出すためのリンクが追加されます)問題のコードは次のとおりですコンテキストメニューが開かれたときに呼び出されます)、上記のコードでは、コンテキストメニューが開かれた要素に含まれるテキストを自動的に埋め込むことはできませんが、エラーレポーターが開きます。 はしかし、私はこのような要素の参照を渡すためにhref属性を設定する行を変更したときに、私は、コンソール上の構文エラーを取得:
l_link.setAttribute('href', 'javascript:void(InvokeReporter(' + p_elem + '));');
p_elemは、コンテキストメニューをトリガしたイベントから抽出された要素の参照です。二重引用符で渡された要素の参照は明白な理由のために、いずれか、それを行うことはありません持っもちろん
、...今
、私は私ができるエラー記者に渡された要素の参照を取得しますどのようにコンテキストメニュー内の参照される要素の内容を使用しますか?方法があれば、私はそれを見ません。私は要素参照を保持するグローバル変数を定義することを避けたいと思います...
EDIT:この問題は、別個の名前空間を形成するために関数をカプセル化することによって回避できます。コンテキストメニューが開かれたエンティティ エラーレポータがその後呼び出されると、以前に保存された要素から内容を読み取ることができます。