动态运行HTML/Javascript

Running HTML/Javascript Dynamically

本文关键字:Javascript HTML 运行 动态      更新时间:2023-09-26

我在一个网页上有一个控件,它在存款时运行回调函数。

在后端,用户可以添加脚本、图像、iframe等,我的程序创建了一个与控件存款回调同名的javascript函数,该函数运行用户在后端输入的代码片段(脚本、iframe、html等)。

该函数应该运行客户端输入CMS的所有HTML/Javascript片段。我事先不知道用户会输入什么,可能是脚本、图像或其他什么。

我在运行HTML/Javascript的片段时遇到问题。

1) 我不能创建一个脚本元素并将其添加到DOM中,因为它可能是一个图像或其他东西。

2) document.write有效,但它会擦除页面。

3) 我不能使用innerHTML,除了我动态添加的脚本之外,一切都正常。

4) 我不能使用textNode,因为当我将脚本添加到DOM时,它不会运行脚本。

每次我动态添加它时,我都会将实际的代码打印到字符串中,而不是运行代码。

有人能帮忙吗?

谢谢。

p.s.

这里有一个HTML的例子,如果我能在trackingCode可能是图像或脚本的地方使用它,那么这就是我的答案:

<head>
<script type='text/javascript'>
function test(pixelData){
var body= document.getElementsByTagName('body')[0];
var trackingCode = '&lt;script type=''text/javascript''&gt;alert(''[hi]'');&lt;/script&gt;';
var div = document.createElement('div')
trackingCode = trackingCode.replace(/&gt;/g,'>').replace(/&lt;/g,'<');
div.innerText = trackingCode;
document.documentElement.firstChild.appendChild(div);
body.appendChild(div);

}
</script>
</head>
<body>
<script type="text/javascript">
test();
</script>
<div id='whatever'>
</div>
</body>

不确定innerHTML有什么问题,您看到您键入的脚本显示为文本还是被忽略了?

请先尝试使用code=escape(code),然后再将其粘贴到元素中。