Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Текстовый файл в Iframe (https://javascript.ru/forum/dom-window/79668-tekstovyjj-fajjl-v-iframe.html)

WadimS 06.03.2020 07:42

Текстовый файл в Iframe
 
В атрибуте src ifame формируется имя обычного текстового файла и он открывается.

Можно ли каким-то образом задать для этого iframe размер шрифта для открываемого файлика?

Теоретически понятно, что можно получить содержание фрейма и JS добавить к тексту всё чо надо. На практике нихрена не получается...

Спасибо за советы.

ksa 06.03.2020 08:22

Цитата:

Сообщение от WadimS
Можно ли каким-то образом задать для этого iframe размер шрифта для открываемого файлика?

Вот пример для файла с одного домена...
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='https://code.jquery.com/jquery-latest.js'></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
window.onload=function() {
    var o=document.getElementById('test');
    o=o.contentDocument;
    o.body.style.color='red';
}
</script>
</head>
<body>
<iframe src='tmp1.csp' id='test'></iframe>
</body>
</html>

Вот есть еще варианты...
https://only-to-top.ru/blog/coding/2...to-iframe.html

voraa 06.03.2020 08:22

Если Iframe загружается из другого источника, то ничего особо сделать нельзя.
Да и из своего тоже можно только добираться то DOM фрейма и уже его изменять.

WadimS 06.03.2020 10:56

Спасибо, ksa!
Да, конечно, всё с одного домена.
Но, простите, если я не прав, но вроде бы window,onload срабатывает при загрузке всего родительского документа. А тут адрес открываемого в ifame документа формируется в js.
<iframe id="showText" frameborder="no" seamless width="100%" height="85%" style="font-size:20px;" src=""></iframe>

document.getElementById('showText').src = 'text/'+idx+'.txt';

И в открываемом во фрейме файлике нет html заголовка - это простой текстовый файл *.txt

voraa 06.03.2020 11:37

Все у него будет. И html и body
Проверил на таком примере
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-type" content="text/html; charset=utf-8" lang="ru">
  <meta name="viewport" content="width=device-width, initial-scale=1.0" >
  <title>TEST IFRAME </title>
<script>
document.addEventListener('DOMContentLoaded', () => {
	let ifr = document.getElementById('showtext');
	ifr.addEventListener ('load', () => {
		let difr = ifr.contentDocument;
		difr.body.style.color = 'red';
		difr.body.style.fontSize = '200%';
	})
	ifr.src = 'ifr.txt'	
})
</script>
</head>

<body>
<iframe id=showtext ></iframe>
<script>
</script>
</body>
</html>

Все работает. Но только, если грузить с сервера, а не локально.

ЗЫ Текстовый файл должен быть в utf-8. Такую кодировку браузер ставит по умолчанию. Иначе кракозябы вместо не латнских символов.

ksa 06.03.2020 13:21

Цитата:

Сообщение от WadimS
но вроде бы window,onload срабатывает при загрузке всего родительского документа

Так я для примера тебе сделал... Когда именно это делать - решать тебе. ;)

ksa 06.03.2020 13:23

Цитата:

Сообщение от WadimS
И в открываемом во фрейме файлике нет html заголовка - это простой текстовый файл *.txt

Я и делал все на "простом файле" с твоим текстом...
Цитата:

Сообщение от WadimS
В атрибуте src ifame формируется имя обычного текстового файла и он открывается.

Можно ли каким-то образом задать для этого iframe размер шрифта для открываемого файлика?

Теоретически понятно, что можно получить содержание фрейма и JS добавить к тексту всё чо надо. На практике нихрена не получается...

Спасибо за советы.


WadimS 07.03.2020 13:48

voraa, ksa, спасибо!


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