26.08.2012, 23:54
|
Интересующийся
|
|
Регистрация: 26.08.2012
Сообщений: 13
|
|
Но все же, подскажите правильное решение! Приведенный выше код работает, но на webkit выводит(и это понятно!), только путь к файлу не запуская его... Необходимо запустить найденную веб-страницу! Браузер и так сильно "тормозит", ресурсы ОС минимальные! Подскажите лаконичное решение!!!
|
|
27.08.2012, 08:43
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от Stef
|
но на webkit выводит(и это понятно!), только путь к файлу
|
<input type="file" onchange="alert(this.value)">
вы видели этот путь, это не реальный путь к файлу: максимум оттуда можно вычленить имя диска и название файла
|
|
27.08.2012, 20:42
|
Интересующийся
|
|
Регистрация: 26.08.2012
Сообщений: 13
|
|
А вот такой код - работает на движке 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. Кстати, по предыдущему примеру -"перетаскивание" файла из окна поиска, в окно браузера - запускает его, т.е. выбранная веб-страница открывается!
|
|
27.08.2012, 21:22
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
<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>
Последний раз редактировалось bes, 28.08.2012 в 00:40.
|
|
28.08.2012, 00:52
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Под оперу только осталось как-то докрутить
|
|
28.08.2012, 01:44
|
Интересующийся
|
|
Регистрация: 26.08.2012
Сообщений: 13
|
|
Очень изящное и лаконичное решение!!! Прямо на страницу учебника! Огромное спасибо за науку! Однако с 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, сразу попадал в поле другой формы?
|
|
28.08.2012, 09:32
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
<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>
Последний раз редактировалось bes, 28.08.2012 в 10:40.
|
|
28.08.2012, 10:29
|
Интересующийся
|
|
Регистрация: 26.08.2012
Сообщений: 13
|
|
Спасибо! Мне кажется, хотя может быть это и дилетантский взгляд, что такое решение будет универсальным. input type="file" - вызывает появление кнопки "Найти" ("Choose File"), при ее активации браузер обращается к ресурсам ОС, появляется окно поиска. Когда файл найден, событие отображается, по разному. В IE и FF - появляется поле со строкой пути к файлу, в Crome(WebKit), просто возле кнопки отображается имя файла. Появление новой формы, с полным указанием пути к файлу, должно работать в браузере любой ОС! В Опере не пробовал, но думаю тоже будет работать... Еще раз - огромное спасибо!
|
|
28.08.2012, 10:33
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от Stef
|
В Опере не пробовал, но думаю тоже будет работать
|
В Опере запускается только при открытии локального файла HTML и в нем уже могут быть скрипты
|
|
28.08.2012, 10:36
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
с оперой не знаю чего делать, она хитрож-я, суёт fakepath везде
|
|
|
|