HTML/Javascript获取当前浏览器窗口并在超时时关闭它

HTML/Javascript获取当前浏览器窗口并在超时时关闭它,javascript,html,forms,Javascript,Html,Forms,我正在为greasemonkey编写一个小脚本,它应该从另一个页面提交表单(因此action属性与我要提交表单的页面不同)。我希望包含脚本的页面类似于www.pennergame.de/overview/,表单元素从www.pennergame.de/stock/foodies/use调用表单操作/ 当我单击输入按钮时,表单元素将被提交。 我现在想要的是,页面不会重定向到/stock/foodies/use/page 所以,我想 1.提交表单元素 2.使用/overview/链接打开一个新窗口,

我正在为greasemonkey编写一个小脚本,它应该从另一个页面提交表单(因此action属性与我要提交表单的页面不同)。我希望包含脚本的页面类似于www.pennergame.de/overview/,表单元素从www.pennergame.de/stock/foodies/use调用表单操作/

当我单击输入按钮时,表单元素将被提交。 我现在想要的是,页面不会重定向到/stock/foodies/use/page

所以,我想 1.提交表单元素 2.使用/overview/链接打开一个新窗口,然后关闭当前窗口或停止重定向到/stock/Foodies/use/

我试过这个:

var overviewLink = 'http://www.pennergame.de/overview/';
var input_drink = document.createElement("input");
input_drink.type = 'submit';
input_drink.id = 'drink_Brot';
input_drink.value = 'Nüchtern werden (' + anzBrot + ' Brot essen)';
form.onsubmit = function (){ window.setTimeout('window.close()', 600); var fenster = window.open(overviewLink, '_blank'); };
实际情况是:表单已提交,新窗口将打开,但旧窗口不会关闭


请尽可能只使用JavaScript解决方案;-)

丹尼斯,我不确定我是否正确理解你的问题,但让我描述一下我从你的信息中得到了什么(如果有错误,请纠正我)。 您希望在当前页面上执行某些操作(如按下按钮),然后在另一个页面上调用表单提交。 此外,还需要防止出现新的窗口外观

  • 您不应该使用窗口对象来解决问题。首先是因为不可能完全隐藏窗口。并且无法关闭当前窗口,因为只有使用window.open(URL)方法创建的窗口才是可关闭的

  • 使用
    打开子页面。易于操作(包括对用户隐藏)

  • 按步骤(按按钮)尝试以下脚本以查看发生了什么:

  • 
    createFrame
    填充其他公司
    提交给Monather公司
    封闭框架
    可变框架
    ,frameDoc
    ,框架形式
    函数createFrame()
    {
    frame=document.createElement(“iframe”);
    frame.src='prev.html'
    frame.setAttribute('hidden','');//在调试时删除此行以查看帧
    document.body.appendChild(框架);
    }
    函数fillFormOnAnotherPage()
    {
    //我们正在查找表单的页面的document对象
    frameDoc=frame.contentDocument
    //不知怎么找到你的表格
    frameForm=frameDoc.getElementById('myFormId')
    //是的,我们可以通过名称访问表单元素
    var someInputElement=frameForm['myInputName']
    //只需将所有需要的数据放到表单元素中
    someInputElement.value=“来自其他页面的问候语”
    }
    函数submitFormOnAnotherPage()
    {
    frameForm.submit();
    }
    函数closeFrame()
    {//如果您真的需要一个带超时的关闭,只需将此函数包装为setTimeout即可
    document.body.removeChild(框架);
    }
    //从控制台或脚本调用此方法来完成所有的工作
    函数doEverything()
    {
    createFrame()
    FILLFORMONONATHERPAGE()
    提交给MonatherPage()
    closeFrame()
    }
    
    window.setTimeout(window.close,600)附言。我看到您在setTimeout中使用字符串作为第一个参数。这是一种不安全的旧样式(目前已弃用)。您可以像下面这样传递匿名函数作为第一个参数
    setTimeout(function(){console.log(“Hallo”);},800)