Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.12.2021, 15:24
Новичок на форуме
Отправить личное сообщение для NTOONT Посмотреть профиль Найти все сообщения от NTOONT
 
Регистрация: 05.12.2021
Сообщений: 5

Вставить в html через js код, который является скриптом
Приветствую! Есть много страниц html, нужно в каждую вставить определенный код. Решил делать это через js. Но если через js у меня получается вставить div, то вставить скрипт не выходит.
html:
<!DOCTYPE html>
<html lang="en">
<head>
    <script src="test.js" type=text/javascript"></script>
    <meta charset="UTF-8">
    <title>Test</title>
</head>
<body>

</body>
</html>


js:
const headerText = `
<script type="text/javascript">
    for(let i=1; i<=3; i++) {
        alert("Из шляпы достали "+i+" кролика!")
    }
</script>
`;

function setHeader() {
    const header = document.createElement("script");
    header.innerHTML = headerText;
    document.body.insertAdjacentElement('afterbegin', header);
}
setHeader();

можете помочь?

Последний раз редактировалось NTOONT, 05.12.2021 в 15:49.
Ответить с цитированием
  #2 (permalink)  
Старый 05.12.2021, 15:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

NTOONT,
если только вставить))), то достаточно обернуть в DOMContentLoaded и экранировать 6 строку, если нужен рабочий скрип то скрипт и создавайте.
Ответить с цитированием
  #3 (permalink)  
Старый 05.12.2021, 15:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

NTOONT,
<!DOCTYPE html>
<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
     <script>
document.addEventListener( "DOMContentLoaded" , function() {
const scriptText = `
    for(let i=1; i<=3; i++) {
        alert("Из шляпы достали "+i+" кролика!")
    }
`;
function setHeader() {
    const header = document.createElement("div");
    const script = document.createElement("script");
    script.textContent = scriptText;
    header.append(script);
    header.append('dfbdfb');
    document.body.insertAdjacentElement('afterbegin', header);
}
setHeader();
  });
    </script>
</head>
<body>
</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 05.12.2021, 16:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

NTOONT,
для тех кто любит погорячее)))
<!DOCTYPE html>
<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
     <script>
document.addEventListener( "DOMContentLoaded" , function() {
const headerText = `
<script type="text/javascript">
    for(let i=1; i<=3; i++) {
        alert("Из шляпы достали "+i+" кролика!")
    }

<\/script>dfbdfb
`;
function setHeader() {
    const header = document.createElement("div");
    header.innerHTML = headerText;
    const script = document.createElement("script");
    let old =  header.replaceChild(script, header.querySelector("script"));
    document.body.insertAdjacentElement('afterbegin', header);
    script.text = old.text
}
setHeader();

  });
    </script>
</head>
<body>
</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 05.12.2021, 16:32
Новичок на форуме
Отправить личное сообщение для NTOONT Посмотреть профиль Найти все сообщения от NTOONT
 
Регистрация: 05.12.2021
Сообщений: 5

Спасибо! Нет возможности править html. Их более 100000 файлов. В них уже вставлены линки на js вида <script src="test1.js"></script>
Через эти js я пытаюсь сделать шапку, футер. И добавить скрипты яндекса и гугл.
Шапку и футер я смог выполнить через примеры, указанные ниже (через тег div). Думал, что по аналогии смогу и скрипт через скрипт запустить на html, но не вышло.
Пример работающего кода:
index.html:
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Test</title>
</head>
<body>
<div class="test">
    <script src="test1.js"></script>
</div>
</body>
</html>

test1.js:
const headerText1 = `
<div class="cont">
Привет
</div>
`;

function setHeader() {
    const header1 = document.createElement("div");
    header1.innerHTML = headerText1;
    document.body.insertAdjacentElement('afterbegin', header1);
}

setHeader();
Ответить с цитированием
  #6 (permalink)  
Старый 05.12.2021, 16:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

NTOONT,
не осилил, всё что мог выше.
Ответить с цитированием
  #7 (permalink)  
Старый 05.12.2021, 17:08
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,701

Переделанный пример из первого поста
<!DOCTYPE html>
<html lang="en">
<head>
    <script>
    // вместо src="test.js"
	const headerText = `
for(let i=1; i<=3; i++) {
    alert("Из шляпы достали "+i+" кролика!")
}
`;
 
	function setHeader() {
		const header = document.createElement("script");
		header.textContent = headerText;
		document.body.prepend(header);
	}

	document.addEventListener( "DOMContentLoaded" , function() {
		setHeader();
	})
   </script>
    <meta charset="UTF-8">
    <title>Test</title>
</head>
<body>
 
</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 05.12.2021, 17:44
Новичок на форуме
Отправить личное сообщение для NTOONT Посмотреть профиль Найти все сообщения от NTOONT
 
Регистрация: 05.12.2021
Сообщений: 5

Сообщение от voraa
// вместо src="test.js"
смысл как раз в том, что запустить в html script из отдельного файла через <script src="test.js" type=""></script>. Странно тег div таким способом можно вставить в html, а тег script получается нельзя?
Ответить с цитированием
  #9 (permalink)  
Старый 05.12.2021, 19:13
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,701

Так я не понял, что вам надо?
Ну поместите мой скрипт

const headerText = `
for(let i=1; i<=3; i++) {
    alert("Из шляпы достали "+i+" кролика!")
}
`;
  
    function setHeader() {
        const header = document.createElement("script");
        header.textContent = headerText;
        document.body.prepend(header);
    }
 
    document.addEventListener( "DOMContentLoaded" , function() {
        setHeader();
    })

в test.js
И вызывайте его
<script src="test.js" type=""></script>

Я же тут не могу написать пример вызова внешнего скрипта
Если нужно вызвать внешний скрипт,
то так.
function setHeader() {
        const header = document.createElement("script");
        header.src ='script_url.js'
        document.body.prepend(header);
    }

Последний раз редактировалось voraa, 05.12.2021 в 19:16.
Ответить с цитированием
  #10 (permalink)  
Старый 05.12.2021, 21:16
Новичок на форуме
Отправить личное сообщение для NTOONT Посмотреть профиль Найти все сообщения от NTOONT
 
Регистрация: 05.12.2021
Сообщений: 5

Сообщение от voraa
Так я не понял, что вам надо?
Ну поместите мой скрипт
Да, это работает. Спасибо. Думал будет более универсально. Для меня сложнова-то.
А как в данном случае вставить такой скрипт, где часть кода внутри тега
<script>, например, это
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-666"
        crossorigin="anonymous"></script>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вставить сложную конструкцию html с выводом через innerText? berman Общие вопросы Javascript 3 26.10.2020 19:39
Как в html вставить код, а конкретно переменную js Амай Общие вопросы Javascript 1 17.01.2020 18:32
Как реализовать отключения JS кода через админку ? lamer Серверные языки и технологии 4 08.02.2012 17:23
Вставка html через JS ka0s Events/DOM/Window 2 19.01.2012 14:45
кеширование HTML переданого через ajax BorisBritva jQuery 6 02.04.2011 01:23