Javascript Chrome扩展窗口。历史记录失败…但为什么?
这简直让我大吃一惊。这里的想法是,我需要禁用上下文菜单在某些机器上工作的功能问题是,当我单击上下文菜单中的“前进”和“后退”处理程序时,页面将保持不变,除非尝试前进,URL将附加一个“#”… 我运行了以下测试: 在一个有一些后台导航历史的选项卡上打开Chrome开发工具,并切换到开发工具控制台选项卡 我键入:Javascript Chrome扩展窗口。历史记录失败…但为什么?,javascript,jquery,google-chrome,google-chrome-extension,Javascript,Jquery,Google Chrome,Google Chrome Extension,这简直让我大吃一惊。这里的想法是,我需要禁用上下文菜单在某些机器上工作的功能问题是,当我单击上下文菜单中的“前进”和“后退”处理程序时,页面将保持不变,除非尝试前进,URL将附加一个“#”… 我运行了以下测试: 在一个有一些后台导航历史的选项卡上打开Chrome开发工具,并切换到开发工具控制台选项卡 我键入: window.history.back()。 window.history.forward() 然后,我将控制台框架顶部的上下文从切换到扩展条目“chrome”-extension://a
window.history.back()。
window.history.forward()
然后,我将控制台框架顶部的上下文从
切换到扩展条目“chrome”-extension://abcd...“我的分机
我键入:
window.history.back()。
window.history.forward()
但是,我的扩展名中的按钮及其附带的代码不起作用。我很想得到一些关于为什么会发生这种情况的反馈
现在,另一个有趣的好消息可能会帮助某人了解可能发生的事情:
我关闭并重新打开Chrome fresh,然后在控制台中运行window.history方法测试(从上面)。这些方法按预期正常工作。然后,我再次尝试测试我编写的新上下文菜单处理程序,但仍然失败。然而;在这些测试之后,如果我尝试再次在控制台中运行history.back
方法,它们现在会失败
禁用所有其他扩展并以相同结果重新启动浏览器后,使用相同步骤进行测试
manifest.json
{
"name": "Disable Context Menu",
"version": "0.1",
"manifest_version": 2,
"description": "Disabled context menu items for thin clients",
"permissions": ["contextMenus","tabs"],
"icons" : {"16": "/icons/printer.png",
"16": "/icons/reload.png",
"16": "/icons/back.png",
"16": "/icons/forward.png"},
"web_accessible_resources": ["/icons/printer.png","/icons/reload.png",
"/icons/back.png","/icons/forward.png"],
"content_scripts": [{
"matches" : ["<all_urls>"],
"js" : ["/js/jquery.js","/js/jquery.contextmenu.js","/js/content.js"],
"css" : ["/css/jquery.contextmenu.css","/css/menu.css"]
}]
}
这是您正在使用的jQuery上的一个bug。更换线路:
row.find('a').click(function () { item.action(e); });
作者:
在不添加preventDefault()
的情况下,单击菜单会导致浏览器导航到当前url,并附加#
,这会干扰您预期的历史操作。在后台页面上下文中历史
会实现什么?我问了同样的问题。就像我说的,我先在内容页上尝试了历史,但也失败了。我从来没有想到这是图书馆里的一个bug!你太棒了!!非常感谢。
row.find('a').click(function () { item.action(e); });
row.find('a').click(function (e) { e.preventDefault(); item.action(e); });