head.appendChild在控制台中给出错误,但工作正常

时间:2020-05-14 14:16:28

标签: javascript inject script-tag

我正在尝试在加载页面时将脚本注入头部,其中我必须在脚本中提供页面名称。 下面是我如何在ts文件中实现它。

**var head = document.getElementsByTagName('head')[0];
 var tag = document.createElement("script");
 tag.type = 'text/javascript';
 tag.innerHTML = "var DDO = {} DDO.pageData = {'pageName': " + pageUrl + "} ";
 head.appendChild(tag);**

正在注入脚本,但是在控制台选项卡中引发了错误。

错误:VM3741:1未捕获的语法错误:appendChild处的标识符意外

3 个答案:

答案 0 :(得分:1)

tag.innerHTML =“ var DDO = {} ; DDO.pageData = {'pageName':” + pageUrl +“}”; 定义变量DDO后缺少分号, 以及您从何处注入pageUrl,请确保已定义变量。

尝试在外部文件中包含脚本,并在内部html中定义的脚本中出现错误的情况下,对该脚本进行注入,并对该文件进行刷新

document.head, document.body to attach scripts

答案 1 :(得分:1)

尝试一下

var head = document.getElementsByTagName('head')[0],pageUrl="somevalue";
var tag = document.createElement("script");
tag.type = 'text/javascript';
tag.textContent = "var DDO = {}; DDO.pageData = {'pageName': '" + pageUrl + "'} ";
head.appendChild(tag);

要删除以前的脚本元素

var script = head.childNodes[0]; //get previous script element
head.removeChild(script); //removing script

您还没有为keyPageName的值提供单引号

答案 2 :(得分:0)

正确答案:

var head = document.getElementsByTagName('head')[0];
    var tag = document.createElement('script');
    tag.type = 'text/javascript';
    tag.id = 'adobedatalayer';
    tag.textContent = 'var DDO = {}; DDO.pageData =' + JSON.stringify(pageinfo);
    var script = document.getElementById('adobedatalayer');
    if (script != null) {
      head.removeChild(script);
    }
    head.appendChild(tag);