Вставить в 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,
если только вставить))), то достаточно обернуть в DOMContentLoaded и экранировать 6 строку, если нужен рабочий скрип то скрипт и создавайте. |
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>
|
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>
|
Спасибо! Нет возможности править 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();
|
NTOONT,
не осилил, всё что мог выше. |
Переделанный пример из первого поста
<!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>
|
Цитата:
|
Так я не понял, что вам надо?
Ну поместите мой скрипт
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);
}
|
Цитата:
А как в данном случае вставить такой скрипт, где часть кода внутри тега <script>, например, это
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-666"
crossorigin="anonymous"></script>
|
Цитата:
В конце примечание (зеленое) script elements inserted using innerHTML do not execute when they are inserted. |
Цитата:
|
Цитата:
Эти атрибуты можно задать как свойства элемента Если взять предыдущий пример, то так
function setHeader() {
const header = document.createElement("script");
header.async = true;
header.crossorigin="anonymous";
header.src ='https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-666';
document.body.prepend(header);
}
Про другие возможные свойства https://developer.mozilla.org/ru/doc...Element/script |
| Часовой пояс GMT +3, время: 00:39. |