Javascript 故意破坏Chrome扩展的Chrome选项卡

Javascript 故意破坏Chrome扩展的Chrome选项卡,javascript,google-chrome,google-chrome-extension,crash,Javascript,Google Chrome,Google Chrome Extension,Crash,嗨,我正在创建一个Chrome扩展来故意破坏Chrome标签。我的方法不是我想要的。我正在努力: chrome.tabs.update({url: "about:crash"}); chrome.tabs.update({url: "chrome://crash"}); window.location = 'about:crash'; window.location = 'chrome://crash'; 这些都不管用 但是,如果我将URL替换为“about:blank”或“about:bla

嗨,我正在创建一个Chrome扩展来故意破坏Chrome标签。我的方法不是我想要的。我正在努力:

chrome.tabs.update({url: "about:crash"});
chrome.tabs.update({url: "chrome://crash"});
window.location = 'about:crash';
window.location = 'chrome://crash';
这些都不管用

但是,如果我将URL替换为“about:blank”或“about:blank”http://google.com’,它起作用了

Chrome是否有某种安全措施,如果有的话。。。有什么建议可以变通一下吗


如果可能的话,我希望避免无限循环导致内存过载。

tabs对象的close方法应该以有序的方式实现这一点,文档如下:

干杯, 使用,您可以结束进程,包括属于选项卡的进程

我想到了完全相同的用例——如果您完成了扩展,我想尝试一下

虽然现在更好的办法是,您的后台页面可以根据页面将选项卡重定向到数据uri,例如

data:text/html,<a href="http://www.google.com/">click here to restore</a>

按说明使用以下有趣的循环

txt=“a”;
而(1)
{
txt=txt+=“a”;//尽可能添加浏览器可以处理的内容
}
//[邪恶的笑声]轰!所有的内存都用完了,现在崩溃了!

加载
chrome://kill
在选项卡上

例如,要关闭chrome上的此选项卡,请输入
chrome://kill
在URL栏中单击enter键


Chrome 20带来的额外乐趣:
chrome://favicon/size/1/http://gonna.crash.you/

让它工作起来,并打包成一个。以下是相关代码:

// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
  queryInfo = new Object();
  chrome.tabs.query(queryInfo, function(result) {
    var i;
    for (i=0; i < result.length; i += 1) {
        chrome.experimental.processes.getProcessIdForTab(result[i].id, function(processId) {
            chrome.experimental.processes.terminate(processId);
        });
    }
  });
});
//当用户单击浏览器操作时调用。
chrome.browserAction.onClicked.addListener(函数(选项卡){
queryInfo=新对象();
chrome.tabs.query(查询信息、函数(结果){
var i;
对于(i=0;i
我很好奇您为什么要这样做:)请查看(背景)页面中的控制台。出现以下错误消息:
“制表符期间出错。更新:对不起,我恐怕无法执行此操作。”
。是的,不允许我加载本地资源:chrome://crash/更新:对不起,我恐怕做不到。进行此扩展的原因是我想强制关闭所有选项卡以释放未使用的内存。我现在不得不在chromes任务管理器中手动关闭它们。很好的空间奥德赛参考,从未注意到…@Andy,你写过chrome扩展吗?我发现这会让你的账单付诸东流chrome://crash (比chrome://kill)是唯一有效释放RAM的解决方案…对不起,不,这不是我想要的。这将完全关闭选项卡。我想要一种崩溃选项卡的方法。这将释放并释放未使用的内存,具体取决于您为什么要这样做?是的,但是我希望能够保持选项卡打开,但不将它们放在内存中。空闲的标签浪费了太多的内存,以至于我们中的许多人都会打开几天/几周/几个月。我发现简单地通过结束进程或关于:crash将其从内存中清除,但我可以稍后刷新选项卡,以便在页面关闭之前重新加载页面。我知道这是一个奇怪的要求,但我的疯狂是有办法的,老实说:)我以前忘了说,谢谢你的建议!kill只是崩溃并重新加载tab@Andy在我的例子中,它显示常规的“it's dead,Jim”(或类似的内容)消息,并一直保持在那里,直到您手动重新加载它。在Windows和Linux上的Chrome20上进行了测试。这对我来说非常好。有没有办法让它“转到”
chrome://kill
用按键打开页面?手工编写对我来说还不够快。@Jeznet好吧,除了制作一个用户脚本或连接键组合的Chrome扩展外,你还可以制作一个书签到
chrome://kill
。我不认为它会起作用,但唉,它确实起作用了:)但是。。。“你为什么要杀掉这么多页面?”卡米洛·马丁·福特(Camilo Martin Fot)的理由与这篇评论中的相同:我认为这是最好的答案。虽然Chrome的公共稳定版本没有这个API,但如果process API能够实现稳定版本,这可能是需要注意的。“如果可能的话,我希望避免无限循环导致内存过载。”非常好!这个插件可以工作。你知道我如何在Chrome启动时运行它,杀死所有的新标签吗?我的目标是在Chrome启动时防止我的许多选项卡阻塞我的所有系统资源,以便以后可以根据需要加载它们。@Eliot我非常感谢您的反馈,谢谢。在chrome启动时搜索
chrome扩展运行
,但没有找到太多。当我经常使用它时,我通常会在启动时反复单击它。@funroll提到的扩展对我不起作用。在Chrome开发版本36.0.1941.0 dev-m上试用。它在chrome开发版或canary版本上对您有效吗?(试试金丝雀,因为它会创建一个单独的配置文件,这样就不会干扰现有的配置文件)@CostinGușă已经有一段时间没有更新扩展名了——如果你想让它与最新的Chrome一起工作,很高兴合并一个拉取请求。@funroll我不确定到底该怎么做。我们可以在github的问题页面上继续讨论吗?我可以填写一个关于这个问题的问题吗?
txt = "a";
while(1)
{
    txt = txt += "a";    //add as much as the browser can handle
}
//<i>[evil laugh]</i> BOOM! All memory used up, and it is now <b>CRASHED</b>!
// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
  queryInfo = new Object();
  chrome.tabs.query(queryInfo, function(result) {
    var i;
    for (i=0; i < result.length; i += 1) {
        chrome.experimental.processes.getProcessIdForTab(result[i].id, function(processId) {
            chrome.experimental.processes.terminate(processId);
        });
    }
  });
});