Задача заключается в следующем: на моей веб-странице я намерен включить средство сообщения об ошибках, которые предполагается вызывать из настраиваемого контекстного меню, чтобы сделать что-то Полегче. Что я хочу достичь, это заполнение определенного поля отчета об ошибке содержимым элемента, на котором было открыто контекстное меню.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: проблема может быть решена путем инкапсуляции функции для формирования отдельного пространства имен, а затем определить глобальную переменную пространства имен, которая принимает объект, на котором открыто контекстное меню. При вызове репортера ошибок он может считывать содержимое из ранее сохраненного элемента.