2016-02-09 4 views
2

У меня есть изображение, которое я хочу скачать.cross browser download image with javascript/jquery

Я пробовал делать это с iframe, и это не сработало. Я попытался сделать это со ссылкой с атрибутом «загрузить» HTML5, и он работал на chrome, но в firefox он открывает новое окно.

мой код:

var href = $("#largeImageContaier img").attr("src") 

$("#dlpic").attr("href", href); 
document.getElementById("dlpic").click() 

HTML:

<a href="" id="dlpic" download="alternate-filename.png"> 

Я хочу, чтобы загрузить изображение непосредственно в браузере, как приведенный выше код делает в хроме, но как я могу сделать это сделать то же самое другие браузеры, в этом примере светлячок

+2

Параметр 'download' атрибут поддерживается только в некоторых браузерах. http://caniuse.com/#feat=download – DPac

+0

heh ... :(. Как это реализовать, чтобы он работал на всех браузерах? Я пробовал с iframe, но он просто загружает изображение внутри iframe – ThunD3eR

+2

В этом случае опции очень ограничены. Решение iframe является обычным способом «исправления» этого, но не будет работать, потому что браузеры знают, как визуализировать изображения. Вы могли бы вернуть серверу образ с типом mime, который браузер не делает Не понимаю, но это, вероятно, хуже (и намного сложнее), чем говорить пользователю о том, чтобы щелкнуть правой кнопкой мыши как. –

ответ

0

От http://webdesign.tutsplus.com/tutorials/quick-tip-using-the-html5-download-attribute--cms-23880

You может использовать Modernizr, чтобы определить, поддерживает ли браузер его, а также отображать инструкции по ссылке, чтобы сообщить пользователю «щелкнуть правой кнопкой мыши и сохранить как».

if (! Modernizr.adownload) { 
    var $link = $('a'); 

    $link.each(function() { 
     var $download = $(this).attr('download'); 

     if (typeof $download !== typeof undefined && $download !== false) { 
      var $el = $('<div>').addClass('download-instruction').text('Right-click and select "Download Linked File"'); 
      $el.insertAfter($(this)); 
     } 

    }); 
} 

Вот список, какие браузеры поддерживают HTML5 скачать атрибут: http://caniuse.com/#search=download

+1

не совсем то, что я ищу. модернизатор может предоставить мне возможность определить, поддерживает ли браузер html5 «загрузить» или нет, но это не дает мне ненадежной функциональности. нет ли способа скрещивания? Я хочу указать, что href является URL-адресом другого сайта, – ThunD3eR

+0

Если браузер не поддерживает атрибут загрузки HTML5, вам не повезло. – mkaatman

2

Если вы используете FireFox, you should be able to use the download attribute

Try фактически устанавливая href к чему-то. После этого я работал как в Chrome, так и в FireFox.

<a href="resource.html" download="The-name-I-want-to-use.html">Download</a> 

MDN говорит, что download используется для установки имени, которое требуется ресурс, чтобы при загрузке. Вам все равно необходимо предоставить href.

Другая вещь, чтобы отметить о download согласно MDN:

Этот атрибут почитается только ссылки на ресурсы, с тем же происхождения.


Если вы хотите, чтобы проверить поддержку download без необходимости использовать какие-либо библиотеки, вы можете использовать:

var dlAttrSupported = (function() { 
    return !!("download" in document.createElement("a")); 
}()); 
+0

мой код сценария устанавливает href m8. "$ (" # dlpic "). attr (" href ", href);" URL-адрес облачного – ThunD3eR

+0

Когда вы говорите «URL-адрес облачного», то есть на другом домене? Это важно, потому что «загрузка» выполняется только для ссылок на ресурсы с одинаковым происхождением. – zero298

+0

это другой домен да. – ThunD3eR