【问题标题】:Get innerHTML from dynamically added script tag从动态添加的脚本标签中获取 innerHTML
【发布时间】:2013-09-18 02:18:53
【问题描述】:
<!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"

原因?

【问题讨论】:

  • 你想知道什么?

标签: javascript html innerhtml


【解决方案1】:

您创建的 js 脚本标签 scriptData 在其标签之间没有内容。它只是链接到要执行的 js 资源。它会看起来像这样

<script type="text/javascript" id="scriptData" src="DynamicText.jsp"></script>

【讨论】:

  • 有没有办法获取文本?
  • 您可以打开一个文件流并读取DynamicText.jsp 文件的内容,但您需要在服务器端编程代码中执行此操作,而不是javascript,因为该文件驻留在服务器上。
  • 这似乎是一个不切实际的例子。为什么需要检索 js 文本而不只是执行它?
  • 问题是我可以从DynamicText.jsp 得到纯文本。在这种情况下,我可以将脚本元素的类型设置为 text/plain。但我需要获取内容。我可以尝试使用 ajax 请求。但由于跨域问题,我发现这是迄今为止最好的方法。
  • 脚本标签将不起作用,除非您通过网络发送有效的 js。哑剧类型并不重要,内容很重要。如果你需要访问源代码,你必须使用 ajax+cors
猜你喜欢
  • 2022-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-14
  • 2016-07-18
  • 1970-01-01
  • 2015-05-08
  • 1970-01-01
相关资源
最近更新 更多