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

问题描述 投票:1回答:2

我正在尝试在加载页面时将脚本注入头部,其中我必须在脚本中提供页面名称。下面是我如何在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处的意外标识符

javascript inject script-tag
2个回答
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

您尚未为关键pageName的值提供单引号


1
投票

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

尝试在外部文件中包含脚本,然后将脚本标签注入到该文件中,以防内部html中定义的脚本出错

document.head, document.body to attach scripts

© www.soinside.com 2019 - 2024. All rights reserved.