除了更改标题之外,如何在firefox中强制另存为对话框?

6 javascript firefox save

有没有办法在ff中强制保存为www.example.com/example.pdf的对话框?(我无法更改标题)

Mat*_*hen 2

我能想到的唯一其他方法是修改 Firefox 设置。我认为你不能这样做。

编辑:

我根据数据 URI 的想法拼凑了一个客户端解决方案。它使用Base64 编码器的修改版本和二进制 XMLHTTP 请求技术 。该脚本下载 PDF 文件,然后使用 Base64 编码器动态生成并放置数据 URI 链接。

当您想要八位字节流编码但无法访问服务器时(OP 的情况似乎如此),它应该很有用。

请注意,我刚刚发布了一个使用Hunts.pdf 的示例,OP 正在使用该示例进行测试。

/**
*
*  Base64 encode / decode
*  http://www.webtoolkit.info/
*
**/

var Base64 = {

    // private property
    _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

    // public method for encoding
    encode : function (input) {
        var output = "";
        var chr1, chr2, chr2raw, chr3, chr3raw, enc1, enc2, enc3, enc4;
        var i = 0;

        //input = Base64._utf8_encode(input);

        while (i < input.length) {

            chr1 = input.charCodeAt(i++) & 0xFF;
            chr2 = isNaN(chr2raw = input.charCodeAt(i++)) ? NaN : (chr2raw & 0xFF);
            chr3 = isNaN(chr3raw = input.charCodeAt(i++)) ? NaN : (chr3raw & 0xFF);

            enc1 = chr1 >> 2;
            enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
            enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
            enc4 = chr3 & 63;

            if (isNaN(chr2)) {
                enc3 = enc4 = 64;
            } else if (isNaN(chr3)) {
                enc4 = 64;
            }

            output = output +
            this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
            this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

        }

        return output;
    }
}



// http://web.archive.org/web/20071103070418/mgran.blogspot.com/2006/08/downloading-binary-streams-with.html
//fetches BINARY FILES synchronously using XMLHttpRequest

load_url = function(url) {
    var req = new XMLHttpRequest();
    req.open('GET',url,false);
    //XHR binary charset opt by Marcus Granado 2006 [http://mgran.blogspot.com]
    req.overrideMimeType('text/plain; charset=x-user-defined');
    req.send(null);

    if (req.status != 200){
    alert(req.status);
    return '';
    }
    return req.responseText;
}

    function getDataURI(filename)
    {
    var file =  load_url(filename);
    var uueFile = Base64.encode(file);
    var uri = 'data:application/octet-stream;base64,' + encodeURIComponent(uueFile);
    return uri;
    }

 window.addEventListener("load",
                      function()
                      {
                        var link = getDataURI("foo.pdf");
                        document.getElementById("myDiv").innerHTML += '<a href="' + link + '"><code>' + link +  '</code></a><br><br>';
                      }
Run Code Online (Sandbox Code Playgroud)