Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Запуск веб-страницы с локального диска (https://javascript.ru/forum/css-html/31076-zapusk-veb-stranicy-s-lokalnogo-diska.html)

Stef 26.08.2012 23:54

Но все же, подскажите правильное решение! Приведенный выше код работает, но на webkit выводит(и это понятно!), только путь к файлу не запуская его... Необходимо запустить найденную веб-страницу! Браузер и так сильно "тормозит", ресурсы ОС минимальные! Подскажите лаконичное решение!!!

bes 27.08.2012 08:43

Цитата:

Сообщение от Stef
но на webkit выводит(и это понятно!), только путь к файлу

<input type="file" onchange="alert(this.value)">

вы видели этот путь, это не реальный путь к файлу: максимум оттуда можно вычленить имя диска и название файла

Stef 27.08.2012 20:42

А вот такой код - работает на движке 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. Кстати, по предыдущему примеру -"перетаскивание" файла из окна поиска, в окно браузера - запускает его, т.е. выбранная веб-страница открывается!

bes 27.08.2012 21:22

<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:52

Под оперу только осталось как-то докрутить

Stef 28.08.2012 01:44

Очень изящное и лаконичное решение!!! Прямо на страницу учебника! Огромное спасибо за науку! Однако с 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, сразу попадал в поле другой формы?

bes 28.08.2012 09:32

<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>

Stef 28.08.2012 10:29

Спасибо! Мне кажется, хотя может быть это и дилетантский взгляд, что такое решение будет универсальным. input type="file" - вызывает появление кнопки "Найти" ("Choose File"), при ее активации браузер обращается к ресурсам ОС, появляется окно поиска. Когда файл найден, событие отображается, по разному. В IE и FF - появляется поле со строкой пути к файлу, в Crome(WebKit), просто возле кнопки отображается имя файла. Появление новой формы, с полным указанием пути к файлу, должно работать в браузере любой ОС! В Опере не пробовал, но думаю тоже будет работать... Еще раз - огромное спасибо!

Deff 28.08.2012 10:33

Цитата:

Сообщение от Stef
В Опере не пробовал, но думаю тоже будет работать

В Опере запускается только при открытии локального файла HTML и в нем уже могут быть скрипты

bes 28.08.2012 10:36

с оперой не знаю чего делать, она хитрож-я, суёт fakepath везде


Часовой пояс GMT +3, время: 20:42.