с использованием этой метки и скрипта. Я могу создать ссылку «перетащить файл на рабочий стол» для Google Chrome 8.0.552.237 OSX (yay!). Моя проблема в том, что я не могу указать имя динамически созданного файла сценария - Google Chrome ALWAYS называет его «download.js», хотя я указал, что он должен называться «customFileName.js».Google Chrome Перетащите на рабочий стол: пользовательские имена файлов
Может ли кто-нибудь дать мне руководство? Это ошибка, или я делаю что-то неправильно? Я знаю, что динамическое создание двоичных файлов в браузере, вероятно, является неправильной стороной края кровотечения, и я должен быть счастлив, что он работает вообще, но возможность назвать файлы будет очень полезна для конкретного приложения, м здание. Исходный код commented- заранее спасибо :)
<!DOCTYPE html>
<html>
<head></head>
<body>
<script>
var mimeType= 'text/javascript'
, javaScript= 'alert("hello");'
// convert javascript to binary string
, binaryText= btoa(javaScript)
// create data uri
, dataUri= "data:text/javascript;charset=utf-8;base64," + binaryText
// a conventional http url pointing to an image
, resourceUri= 'http://www.chromium.org/_/rsrc/1220198801738/'
+ 'config/app/images/customLogo/customLogo.gif?revision=2'
// drag this link to your desktop or other folder and
// Google Chrome will download a file to that location
// called "download.js" - it should be called "customFileName.js"
, draggableScriptAnchor= document.createElement('a')
// drag this link to your desktop or other folder and
// Google Chrome will download a file to that location
// called "customFileName.gif" as expected
, draggableResourceAnchor=document.createElement('a')
// setup drag to desktop
// set this anchors href to the data uri
draggableScriptAnchor.href= dataUri;
draggableScriptAnchor.innerText= 'Drag dynamic script';
// listen for drag events
draggableScriptAnchor.addEventListener
(
'dragstart'
, function (mouseEvent)
{
mouseEvent.dataTransfer.setData
(
"DownloadURL"
// note that the convention for this string is
// mimetype:filename:url and that the "file"
// is given the name "customFileName.js"
, "text/javascript:customFileName.js:" + dataUri
)
}
, false
);
// set this anchors href to a conventional http url
draggableResourceAnchor.href= resourceUri
draggableResourceAnchor.innerText= "Drag image";
// listen for drag events
draggableResourceAnchor.addEventListener
(
'dragstart'
, function (mouseEvent)
{
mouseEvent.dataTransfer.setData
(
"DownloadURL"
// as above, except that this time the mimetype
// is image/gif and the file name is customFileName.gif
// THIS WORKS AS EXPECTED
, "image/gif:customFileName.gif:" + resourceUri
)
}
)
// add elements to the DOM
document.body.appendChild(draggableScriptAnchor);
document.body.appendChild(document.createElement('br'));
document.body.appendChild(draggableResourceAnchor);
</script>
</body>
</html>
Почти год спустя - может подтвердить, что это было ошибка, и что теперь она работает в Chrome 19 (возможно, ранее зафиксирована раньше) – VLostBoy