<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<script type="text/javascript" id="embeddedScript">
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("id", "scriptData");
script.src = "DynamicText.jsp";
script.onload = function() {
alert(x);
alert(document.getElementById("scriptData"));
alert(document.getElementById("scriptData").innerHTML);
alert(document.getElementById("embeddedScript").innerHTML);
};
document.getElementsByTagName("head")[0].appendChild(script);
</script>
</body>
</html>
DynamicText.jsp
x="Hello World!"
Первое предупреждение дает Hello World!
Второе предупреждение дает [Object HTMLScriptElement]
Я ожидал, что третье предупреждение даст значение x="Hello World!"
Но он отображает пустое значение.
Но для четвертого предупреждения я мог видеть весь текст, который был внутри тега скрипта с id "embeddedScript"
Причина?
Тег js script, созданный scriptData
, не содержит содержимого между его тегами. Это просто ссылка на ресурс js для выполнения. Это выглядело бы так:
<script type="text/javascript" id="scriptData" src="DynamicText.jsp"></script>
DynamicText.jsp
, но вам нужно сделать это в программном коде на стороне сервера, а не в javascript, так как файл находится на сервере.