【问题标题】:Closing windows that were opened by search query关闭由搜索查询打开的窗口
【发布时间】:2009-09-14 02:46:05
【问题描述】:

请转至http://musicalinstrumentsfinder.com/search.php

如果您愿意,顶部搜索框是一个超级搜索框,您在其中输入的任何文本都会自动放入下面的各个搜索框中。此外,点击“搜索全部”按钮后,它会自动模拟点击其下方所有单独的搜索框。

如需使用,请在顶部搜索框中输入“Gibson”或“Fender”。

问题:点击“关闭窗口”按钮后,如何关闭自动打开的窗口?

请注意,每个自动打开的窗口可能有不同的 URL,具体取决于在顶部搜索表单中输入的关键词。

此外,窗口是通过 HTML FORM 操作而不是 JS window.open() 命令打开的。因此,我认为我不能用 window.close() 命令关闭它们

【问题讨论】:

    标签: jquery dom forms


    【解决方案1】:

    我认为您唯一的选择是使用 window.open 和 .close(保存对 windows 的引用),因为没有对从 HTML 表单打开的新窗口/选项卡的任何引用。

    因为您使用的是 GET,所以应该没那么难。

    编辑:A sn-p:

    (function() {
    
    var windowReferences = [], closeBtn = document.getElementById('close-btn'), form = document.getElementById('my-form');
    
    form.onsubmit = function() {
        var urls = ['http://sitename.com?foo=bar', 'http://msn.com/foo/bar'], len = urls.length;
        for ( var i = 0; i < len; ++i ) {
             windowReferences.push( window.open( urls[i] ) );
        }
        return false;
    
    };
    
    
    closeBtn.onclick = function() {
        for ( var i = 0, l = windowReferences.length; i<l; ++i ) {
            windowReferences[i].close();
        }
    }
    
    })();
    

    这还没有经过测试 - 如果它不起作用,请 lmk。

    【讨论】:

    • 我不确定我是否理解您在说什么。您能否详细解释一下?非常感谢!
    • 我是说您可能必须在表单元素的“提交”事件上附加一个事件处理程序,并为每个 url/ad 手动执行 window.open,然后将这些 window.open 引用推送到一个数组,在“关闭窗口”上遍历数组并在每个窗口对象引用上调用 .close。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 2016-08-08
    • 1970-01-01
    相关资源
    最近更新 更多