2009-07-01 1 views
2

Я бы хотел использовать Javascript, чтобы IE6 загружал файл. Он будет создан на лету, используя Javascript. Этот файл не существует на веб-сервере. Вот небольшой пример:Загрузите XML-код в IE6

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
    <script type="text/javascript"> 
function clicked() { 
    var xml = "<data>Just for testing</data>"; 
    document.open("text/xml", "replace"); 
    document.write(xml); 
} 
    </script> 
    </head> 
    <body> 
    <input type="button" value="Download" onclick="clicked();" /> 
    </body> 
</html> 

Вместо загрузки XML в окне браузера, я хочу, чтобы вызвать IE6 подсказать пользователю, где скачать данные так, что она может быть сохранена без них того, чтобы использовать файл -> Сохранить как. Есть идеи?

ответ

2

Для IE6 вы должны быть в состоянии использовать document.execCommand() после вашего document.write():

document.execCommand('SaveAs',true,'file.xml'); 

Это не является частью какого-либо стандарта и будет работать только в IE вкусовых браузеров.

+1

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

+0

Вы можете создать невидимый или 0-на-0 iframe и записать xml в этот документ вместо основного документа. –

-1

Нет, это невозможно. Веб-браузер строго не позволяет этого, так как возможность сохранять файлы на диск только с помощью JavaScript, будет очень опасной, даже если появится всплывающее окно подтверждения.

EDIT: Благодаря другим ответам, я узнал (не удивительно), что такое поведение возможно с некоторыми версиями IE.

+0

Я решил, что это будет что-то вроде этого. Что делает его более опасным, чем щелчок ссылки и загрузка чего-то злонамеренного с сервера? –

+1

Пользователю XSS + не нужно кликать, возможно, –

+0

Согласен, это ужасное поведение для браузера. Однако IE разрешает это через object.execCommand - я не очень удивлен, что это единственный браузер, который делает;) –

0

Если ваши данные должны быть сгенерированы на стороне клиента, вы можете отправить их обратно на сервер, чтобы он мог быть возвращен в виде загружаемого файла.

+0

Нет сервера, это будет отключено от общего ресурса в Интранете. Я бы хотел написать приложение Rails для этого, но, к сожалению, это не вариант. Мне нужно делать то, что у меня есть. –