Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome扩展窗口。历史记录失败…但为什么?_Javascript_Jquery_Google Chrome_Google Chrome Extension - Fatal编程技术网

Javascript 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

这简直让我大吃一惊。这里的想法是,我需要禁用上下文菜单在某些机器上工作的功能问题是,当我单击上下文菜单中的“前进”和“后退”处理程序时,页面将保持不变,除非尝试前进,URL将附加一个“#”…

我运行了以下测试:

在一个有一些后台导航历史的选项卡上打开Chrome开发工具,并切换到开发工具控制台选项卡

我键入:

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); });