Javascript -将网站上的图像更改为本地文件



我有一个脚本,我希望最终用户能够指定一个图像(使用文件选择器)来更改网站的背景。但是我不希望他们实际上将文件上传到服务器,因为这不仅是多余的(因为他们会在后台更改时重新下载它),而且因为它是一个用户脚本也是不可能的。更确切地说,我只希望背景src更改为本地文件路径。

这是如何最好地完成?由于某种原因,文件选择器表单元素只允许javascript访问文件名,而不是完整的路径。只要用户不需要手动输入文件路径,我可以使用不同的HTML元素。

您可以使用FileReader API将图像编码为data: URL并将其保存在浏览器的LocalStorage中。但是,如果用户清除了浏览器历史记录,背景也会丢失。

我已经写了一些示例代码让你开始:

<input id="image-input" type="file">
JavaScript

var input = document.getElementById('image-input'),
    tag = document.getElementsByTagName('html')[0];
input.addEventListener('change', function() {
    var file = input.files[0],
        reader = new FileReader();
    if( !file ) {
        return;
    }
    reader.addEventListener('load', function( evt ) {
        localStorage['background-image'] = reader.result;
        tag.style.backgroundImage = 'url(' + reader.result + ')';
    });
    reader.readAsDataURL(file);
});
if( localStorage['background-image'] ) {
    tag.style.backgroundImage = 'url(' + localStorage['background-image'] + ')';
}

这里有一个JSFiddle(注意,我已经注释掉了本地存储代码,因为它在JSFiddle中不允许)。

相关内容

  • 没有找到相关文章

最新更新