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

head.appendChild giving error in console but working fine

我正在尝试在头部加载页面时注入脚本,其中我必须在脚本中提供页面名称。 下面是我如何在我的 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);**

正在注入脚本,但控制台选项卡中出现错误。

ERROR: VM3741:1 Uncaught SyntaxError: Unexpected identifier at appendChild

tag.innerHTML = "var DDO = {}; DDO.pageData = {'pageName': " + pageUrl + "} "; 定义变量 DDO 后缺少分号, 还有你从哪里注入 pageUrl,确保定义了变量。

尝试在外部文件中添加脚本并在引用该文件的脚本标签中注入,以防内部定义的脚本出现错误 html

document.head, document.body to attach scripts

试试这个

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

您没有为键 pageName 的值提供单引号

正确答案:

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);