2011-11-18 37 views
8

我想用JavaScript创建一个文本文件,我知道它可以通过使用ActiveX对象,但它只能在IE浏览器上运行。用JavaScript创建文本文件

我的要求是使用JavaScript为Safari浏览器生成一个文本文件?

任何人都可以在这方面帮助我吗?

+0

老兄提供给我们您的代码,以便我们可以帮助..... –

+0

另请参阅[如何使用兼容javascript的跨浏览器创建,保存txt文件](http://stackoverflow.com/questions/7392117/ how to create-save-a-txt-file-with-javascript-compatible-cross-browser) – harpo

回答

-2

,但我的要求是使用JavaScript的 Safari浏览器

这是不可能的,香草的Javascript由于安全限制生成一个文本文件中。然而,您可以使用服务器端JavaScript,如Node.JS或Ajax或其他服务器端技术。

8

在JavaScriptü可以使用下面的行询问用户保存的文本文件,

window.open("data:text/json;charset=utf-8," + escape("Ur String Object goes here"));

我已经在一些流行的浏览器测试这回一些时间...只是确保它工作在Safari或不... 好运

+0

已发布此答案已有3年,但此代码在Google Chrome中无法正常工作。 – hexicle

12

另一种方法可以使用BlobURL.createObjectURL。所有最新的浏览器,包括Safari 6+都支持它们。

var textFile = null, 
    makeTextFile = function (text) { 
    var data = new Blob([text], {type: 'text/plain'}); 

    // If we are replacing a previously generated file we need to 
    // manually revoke the object URL to avoid memory leaks. 
    if (textFile !== null) { 
     window.URL.revokeObjectURL(textFile); 
    } 

    textFile = window.URL.createObjectURL(data); 

    // returns a URL you can use as a href 
    return textFile; 
    }; 

下面是一个使用这种技术来从textarea保存任意文本的example

另一件需要注意的例子是我在下载链接上使用了download attribute。不幸的是,Safari目前不支持它。但是,在浏览器中,单击时会自动下载文件,而不是在浏览器中打开文件。另外,由于我将download属性设置为info.txt,因此将使用该名称下载该文件,而不是由createObjectURL生成的随机名称。