我想知道为什么默认情况下没有集成.我想在Windows资源管理器的VS解决方案文件的文件上下文菜单中有一个项目来构建它.
有这个工具吗?或者我必须自己创建吗?
我在Google Chrome中创建了一个上下文菜单项,如下所示:
chrome.contextMenus.create({
"title":"My Context Menu Item",
"contexts":["editable"],
"onclick": onClick
});
Run Code Online (Sandbox Code Playgroud)
该onClick回调接收两个参数:一个OnClickInfo对象和一个标签对象.这两个对象似乎都不包含对调用上下文菜单时右键单击的DOM元素的引用.我有console.logged这两个对象但在任何地方都没有看到对目标元素的任何引用.
期望的结果:
onClick回调中,让我的扩展名搜索相对于目标右键单击元素的父"form"元素就目前而言,它看起来并不像Chrome提供对目标元素的任何引用.有没有人找到解决这个限制的方法?
我想将contextmenu绑定到命令列表.
<Grid.ContextMenu>
<ContextMenu ItemsSource="{Binding ItemContextCommands, Converter={StaticResource commandToStringConverter}}">
<ContextMenu.ItemTemplate >
<DataTemplate DataType="MenuItem">
<MenuItem Command="{Binding}"></MenuItem>
</DataTemplate>
</ContextMenu.ItemTemplate>
</ContextMenu>
</Grid.ContextMenu>
Run Code Online (Sandbox Code Playgroud)
在commandToStringConverter简单的命令列表转换为字符串调用列表ToString()列表中的每个命令.
我怎样才能实现Command每个MenuItem被称为?
我在这里有一个项目,我需要在我的WPF应用程序中自定义上下文菜单,其中一个按钮将放置在所有菜单项的底部.
但是,如果我要通过XAML添加按钮,它将在上下文菜单中显示为集合中的另一个项目,并且鼠标悬停突出显示将对其起作用.
我希望将上下文菜单调整为类似网格的样式,以便我可以自定义它下面的样式.
知道如何实现这一目标(最好是在XAML中)?
我正在尝试使用jQuery定位自定义上下文菜单.
它第一次出现在正确的位置(鼠标坐标),但随后当前位置与新位置相加,以便菜单从屏幕上消失.
这是JavaScript:
<script>
$(function(){
$('#box').hide();
$(document).bind("contextmenu", function(e) {
$("#box").offset({left:e.pageX, top:e.pageY});
$('#box').show();
e.preventDefault();
});
$(document).bind("click", function(e) {
$('#box').hide();
});
$('#box').bind("click", function(e) {
$('#box').hide();
});
});
</script>
Run Code Online (Sandbox Code Playgroud) 我开发了一个chrome扩展,当我点击地址栏附近的图标时会打开一个弹出窗口.一切正常,但我想为它添加一些功能.所以我想我还会添加一个上下文菜单项,以便用户只需搜索突出显示的单词.当用户点击上下文菜单中的项目时,我希望弹出窗口显示(右上角的默认弹出窗口,而不是新的弹出窗口或新选项卡).
我可以使用此功能吗?如果是,我该如何实施呢?
我试过寻找解决方案,但没有发现任何符合我情况的解决方案.我有一个MainActivity,它扩展了FragmentActivity和多个ListFragments.我使用PagerSlidingTabStrip库作为slidetabs和一个ViewPager.片段没有XML布局,它们只是ListFragments,它返回ListView,因此不需要布局.
它是一个音板应用程序,长按一个列表项,允许用户将声音文件设置为铃声,通知或警报,或保存到SD卡.
现在,所有片段加载自己的数据就好了.一切似乎都没问题,但是,当我在后台加载的Fragment上使用上下文菜单时,似乎是使用了在它之前加载的第一个或前一个片段中的ListView,它是在创建它时可见的.
我的意思是,说我的MainActivity开始,它加载FragmentA,并在后台FragmentB也被预加载.
在onActivityCreated方法中,对于两个Fragments,它使用registerForContextMenu(getListView()).
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// Data loading etc
MyAdapter adapter = new MyAdapter(getActivity(),
R.layout.data_row, data);
setListAdapter(adapter);
registerForContextMenu(getListView());
}
Run Code Online (Sandbox Code Playgroud)
但似乎正在发生的事情是FragmentB调用了registerForContextMenu(getListView()),它似乎采用了当前活动的ListView,这是FragmentA的列表.
所以,假设我选择从上下文菜单中保存文件.我长按了FragmentB的第一项,但它试图保存FragmentA的第一项.如果我只是点击列表项,它会像您期望的那样播放它自己的声音,但是上下文菜单命令使用预加载时可见的片段列表.
这是onCreateContextMenu.注意,此时它使用上下文菜单Title中的正确项Title.
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;
menu.setHeaderTitle(data.get(info.position).getDataName());
MenuInflater inflater = this.getActivity().getMenuInflater();
inflater.inflate(R.menu.context_menu, menu);
}
Run Code Online (Sandbox Code Playgroud)
这是onContextItemSelected.
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
int dataID = data.get(info.position).getDataID();
String dataName = data.get(info.position).getDataName();
Activity activity = getActivity();
if(activity instanceof …Run Code Online (Sandbox Code Playgroud) 我在chrome.contextMenu 这里看API .
列出的上下文类型是:
其中一些是直观的,其他的不是那么多.
我在哪里可以找到这些不同背景的定义?没有这种背景知识,很难使用api.
具体来说,我想知道"页面","框架","可编辑"和"发射器".
有没有一种方法可以使我的站点使用右键单击来拖动DOM元素?根据此 MDN参考,该drag事件具有的buttons属性为:左击为1,右击为2,两者均为3。所以我写了一些非常简单的测试:
data:text/html, <div id="draggable" draggable="true" ondrag="console.log(event.buttons)" oncontextmenu="return false">Drag This</div>
Run Code Online (Sandbox Code Playgroud)
当我用鼠标左键拖动该div时,它会在控制台上显示1(反复地,ondrag事件在拖动过程中不断触发)。当我尝试使用右键拖动它时,什么也没发生-我无法拖动它。当我开始使用向左按钮拖动它,然后按住向左和向右按钮时,它会打印3。
有什么方法可以允许使用鼠标右键拖动元素?
(如果需要的话,我正在使用最新的Chrome稳定版。)
我有一个应用程序,可以拖放SVG元素内部的元素(感谢d3-drag和d3-zoom,请参阅https://bl.ocks.org/mbostock/3127661b6f13f9316be745e77fdfb084作为此类页面的示例)也可以在启用触摸的设备上使用,但会发生的是,长按后会弹出一个上下文菜单(至少在IE11,Edge和Firefox中)并且挡住了,因此我想阻止上下文菜单显示在这种情况下.
我可以通过处理contextmenu事件和.preventDefault()对事件对象进行操作来禁止显示上下文菜单,但我想知道是否存在一个解决方案,其中上下文菜单只是在触摸案例中被阻止显示而且它仍然会出现在例如右边 -单击或在元素具有焦点时按下菜单键时.
我开始还以为我可以看看.button和.buttons事件对象的属性,但它似乎是那些价值被任意0或2和它看起来像它可以任意组合在不同系统上的各种浏览器进行测试时被发现.
元素已经有了touch-action: none.
是否有一些工作方式使上下文菜单只显示长按触摸的结果?