2013-02-19 2 views
3

У меня есть svg на моей веб-странице. Элементы при нажатии правой кнопкой мыши должны отображать контекстное меню с данными, полученными из базы данных. Элементы написаны таким образом, что событие правого щелчка запускает функцию js на странице. И мне нужно вызвать контекстное меню из java-скрипта. Может кто-то, пожалуйста, помогите мне с этим. Я застрял в этом вопросе почти 3 дня. Элемент:вызывать контекстное меню контекста из java-скрипта

<rect/><text>L</text></g><g id="118" onmousedown="RightClickExecute(event,118)"> 

ява скрипт:

function RightClickExecute(event, id) { 
    if (event.button == 2) {document.getElementById("myForm:selectedEntityid").value = id; 
     document.getElementById("myForm:selectedObjectType").value = 'Entity'; 
     document.getElementById("myForm:RightAction").click(); 
    } 
} 
function showContextMenu(){         
    document.getElementById("myForm:contextMenuItemId").click(); 
} 

XHTML:

<p:contextMenu id="contextMenuId" for="svgContainerPanel" 
       widgetVar="contextMenuVar" rendered="#{myBean.objectType=='Entity' ? true : false}"> 
       <p:menuitem id="contextMenuItemId" ></p:menuitem> 
</p:contextMenu> 

<p:contextMenu event="click" id="contextMenu2Id" for="contextMenuId" 
       widgetVar="contextMenu2Var" model="#{my.model}" > 

       </p:contextMenu> 

<p:commandButton id="RightAction" style="visibility:hidden" 
       action="#{myBean.populateMenu}" ajax="true" 
       type="submit" oncomplete="showContextMenu()" 
       update="contextMenuId,contextMenu2Id"> 
      </p:commandButton> 

<h:inputHidden id="selectedEntityid" 
       value="#{myBean.selectedEntityId}"> 
      </h:inputHidden> 
<h:inputHidden id="selectedObjectType" 
       value="#{myBean.objectType}"> 
      </h:inputHidden> 

ответ

3

Primefaces игровая Контекстное не имеет возможность получить это, так что вы можете использовать JQuery, чтобы сделать это. Если вы хотите показать contextMenu, вам нужно изменить положение contextMenu на позицию мыши (контекст загрузки страницы по умолчанию, но у него есть css display: none, поэтому вам нужно изменить css). В контексте contextMenu у Primefaces есть атрибут widgetvar для использования в клиенте (его метод показывает, чтобы показать его).

Primefaces's contextMenu имеют атрибут widgetvar для использования в клиенте (это показывает метод, чтобы показать его).

, например, вы показываете ContextMenu при наведении курсора мыши при наведении на компонент, которые имеют идентификатор rongnk, у меня есть форма (ID: форма), а ContextMenu (ID: ххх)

  <script type="text/javascript"> 
       //<![CDATA[ 
       $(document).on('mouseover', '#form\\:rongnk', function(e) { 
        $(PrimeFaces.escapeClientId('form:xxx')).css({ 
         top: e.pageY+'px', 
         left: e.pageX+'px'       
        }).show(); 
       });     
       //]]> 
      </script> 
Смежные вопросы