【问题标题】:Send a file to a user, THEN load new URL using Javascript向用户发送文件,然后使用 Javascript 加载新 URL
【发布时间】:2011-10-20 20:59:46
【问题描述】:

我需要为用户提供一个文件,并将他们带到一个新的 URL。发送下载文件的代码在我的提交处理程序中。我在 Chrome 和 Firefox 中是这样做的:

function submitMyForm() {
    document.forms[0].submit();
    window.open("http://www.myURL.com");
}

在 Chrome 和 Firefox 中,这可以完美运行。它在新选项卡中打开 myURL.com,并提示用户打开/保存我创建的文件。但是,在 IE9 中,myURL.com 的新选项卡打开了,但下载提示被隐藏了,因为它会在旧的第一个选项卡的底部弹出,用户看不到。

我试图通过只使用一个标签来解决这个问题:

function submitMyForm() {
    document.forms[0].submit();
    window.location.href = "http://www.myURL.com";
}

但是,这只是立即加载新 URL,并没有调用我的 submit() 函数,就好像它完全忽略了该行一样;这发生在所有浏览器中,更糟糕的是。

【问题讨论】:

    标签: javascript internet-explorer-9 form-submit


    【解决方案1】:

    提交表单后,当前页面上的所有操作都会停止,除非您要发布到新页面 (target="") 或 iframe。

    【讨论】:

    • 这不是正在发生的事情。 “document.forms[0].submit()”行被忽略,“window.location.href”行被调用。
    【解决方案2】:

    我最终将 target = "_blank" 添加到我的表单中,并根据浏览器执行不同的功能。感谢 this page 帮助检测 Chrome。

    function submitform() {
        document.forms[0].submit();
    
        //Test for Chrome
        if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {
            //this works in Chrome
            window.open("http://www.myURL.com");
        }
        else {
            //this works in IE9 and Firefox
            window.location.href = "http://www.myURL.com";
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 2014-05-20
      • 2011-12-28
      • 1970-01-01
      • 2020-02-25
      • 2011-02-22
      相关资源
      最近更新 更多