Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как изменить имя документа при сохранении в chrome? (https://javascript.ru/forum/events/79256-kak-izmenit-imya-dokumenta-pri-sokhranenii-v-chrome.html)

DrJekyll 15.01.2020 21:33

Как изменить имя документа при сохранении в chrome?
 
есть текстовый input text в документе. Нужно чтобы при сохранении документа в браузере chrome (печать -> сохранить как pdf) имя файла становилось text.pdf. пробовал так- не работает.

function print_with_name(){
let temp = document.getElementById('inputText').innerText
document.title = temp;

Malleys 16.01.2020 04:51

Цитата:

Сообщение от DrJekyll
Нужно чтобы при сохранении документа в браузере chrome (печать -> сохранить как pdf) имя файла становилось text.pdf. пробовал так- не работает.

Судя по приведённому коду коду, вы всегда сбрасываете заголовок... Не совсем понятно, что вы хотите достичь.

Цитата:

Сообщение от DrJekyll
Нужно чтобы при сохранении документа в браузере chrome (печать -> сохранить как pdf) имя файла становилось text.pdf.

Это делает следующий скрипт...
document.title = "text";
Но вы можете захотеть сразу установить правильный заголовок!
<title>text</title>


DrJekyll, в случае, если вы печатаете тот документ, который находится в основном окне (не в фрейме), то имя файла берётся из заголовка страницы. Если вы хотите изменять имя непосредственно перед печатью, то можно так...
<form id="print">
	<input name="title" placeholder="Введите имя" required>
	<button>Печать</button>
</form>

<script>

document.getElementById("print").addEventListener("submit", event => {
	event.preventDefault();
	const title = document.title;
	document.title = event.target.elements.title.value;
	addEventListener("afterprint", () => {
		document.title = title;
	}, { once: true });
	print();
});
	
</script>


Если вам нужно печатать документ, который находится внутри фрейма (например, как тут на форуме этот пример), то...
<form id="print">
	<input name="title" placeholder="Введите имя" required>
	<button>Печать</button>
</form>

<script>

document.getElementById("print").addEventListener("submit", event => {
	event.preventDefault();
	const win = open("about:blank", "print", "width=640,height=480");
	for (const node of win.document.childNodes) win.document.removeChild(node);
	win.document.appendChild(document.documentElement.cloneNode(true));
	win.document.title = event.target.elements.title.value;
	win.onafterprint = () => win.close();
	win.print();
});
	
</script>


ЕЩЁ Возможно вы просто перепутали innerText с value!


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