Но все же, подскажите правильное решение! Приведенный выше код работает, но на webkit выводит(и это понятно!), только путь к файлу не запуская его... Необходимо запустить найденную веб-страницу! Браузер и так сильно "тормозит", ресурсы ОС минимальные! Подскажите лаконичное решение!!!
|
Цитата:
<input type="file" onchange="alert(this.value)"> вы видели этот путь, это не реальный путь к файлу: максимум оттуда можно вычленить имя диска и название файла |
А вот такой код - работает на движке WebKit:
<!DOCTYPE html> <html> <head> <title></title> </head> <input type="file" id="files" name="files[]" multiple /> <output id="list"></output> <script> function handleFileSelect(evt) { var files = evt.target.files; // FileList object // files is a FileList of File objects. List some properties. var output = []; for (var i = 0, f; f = files[i]; i++) { output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ', f.size, ' bytes, last modified: ', f.lastModifiedDate.toLocaleDateString(), '</li>'); } document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>'; } document.getElementById('files').addEventListener('change', handleFileSelect, false); </script> </html> Подскажите, как можно его минимизировать, чтобы запускались только html файлы? P.S. Кстати, по предыдущему примеру -"перетаскивание" файла из окна поиска, в окно браузера - запускает его, т.е. выбранная веб-страница открывается! |
<input type="file" onchange = "location.href = window.webkitURL.createObjectURL(event.target.files[0])"> <input type="file"> <script> //хром и FF document.body.children[0].onchange = function (e) { window.URL = window.URL || webkitURL; var file = e.target.files[0]; if (file.type.indexOf('html') != - 1) { window.location.href = window.URL.createObjectURL(file); } } </script> <input type="file"> <script> //хром, FF, IE document.body.children[0].onchange = function (e) { if (navigator.userAgent.indexOf('MSIE') != -1) { var url = this.value; if (url.indexOf('html') != -1 || url.indexOf('htm') != -1) { window.location.href = url; } } else { window.URL = window.URL || webkitURL; var file = e.target.files[0]; if (file.type.indexOf('html') != - 1) { window.location.href = window.URL.createObjectURL(file); } } } </script> |
Под оперу только осталось как-то докрутить
|
Очень изящное и лаконичное решение!!! Прямо на страницу учебника! Огромное спасибо за науку! Однако с QtWebKit, программа работает не совсем корректно:( В окне браузера, после выбора нужного файла *.html в окошке QtOpen, вместо запуска веб-страницы, рядом с кнопкой "Choose File", появляется полный путь к файлу:
file:///usr/local/etc/.../*.html Приходится создавать дополнительную форму типа: <!DOCTYPE html> <html> <head> <title></title> </head> <script> function urlJump() { var szNewURL=""; szNewURL=prompt("open URL ", "name"); window.location.href=szNewURL; } </script> <form name="selectForm"> <p><input type="button" value="GO!" onClick="urlJump();"> </html> Копировать в поле формы полный адрес, только тогда веб-страница запускается. В моем случае - это уже огромный прогресс! Подскажите, можно ли, чтобы полученный с помощью Вашей программы полный URL, сразу попадал в поле другой формы? |
<input type="file" onkeyup="alert(event.keyCode)"> <script> //хром и FF document.body.children[0].onchange = function (e) { window.URL = window.URL || webkitURL; var file = e.target.files[0]; if (file.type.indexOf('html') != - 1) { window.location.href = prompt('url', window.URL.createObjectURL(file)); } } </script> |
Спасибо! Мне кажется, хотя может быть это и дилетантский взгляд, что такое решение будет универсальным. input type="file" - вызывает появление кнопки "Найти" ("Choose File"), при ее активации браузер обращается к ресурсам ОС, появляется окно поиска. Когда файл найден, событие отображается, по разному. В IE и FF - появляется поле со строкой пути к файлу, в Crome(WebKit), просто возле кнопки отображается имя файла. Появление новой формы, с полным указанием пути к файлу, должно работать в браузере любой ОС! В Опере не пробовал, но думаю тоже будет работать... Еще раз - огромное спасибо!
|
Цитата:
|
с оперой не знаю чего делать, она хитрож-я, суёт fakepath везде
|
Часовой пояс GMT +3, время: 20:42. |