【问题标题】:Javascript - change image on web site to local fileJavascript - 将网站上的图像更改为本地文件
【发布时间】:2014-03-15 17:07:53
【问题描述】:

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

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

【问题讨论】:

标签: javascript file greasemonkey filechooser


【解决方案1】:

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

我已经编写了一些示例代码来帮助您入门:

HTML

<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 可用 here(请注意,我已经注释掉了 localstorage 代码,因为它在 JSFiddle 中是不允许的)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-06
    • 2019-06-06
    • 2011-10-14
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多