Показать сообщение отдельно
  #2 (permalink)  
Старый 16.01.2020, 04:51
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от 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!
Ответить с цитированием