【发布时间】:2012-02-19 12:01:44
【问题描述】:
我在一个网页上有一个控件,该控件在进行存款时运行回调函数。
在后端,用户可以添加脚本、图像、iframe 等,我的程序创建一个与控件存款回调同名的 javascript 函数,该函数运行用户输入到后端的代码的 sn-ps(脚本、iframe、html 等)。
该函数应运行客户端输入 CMS 的所有 HTML/Javascript 片段。我事先不知道用户会输入什么,它可能是脚本或图像或其他东西。
我在运行 HTML/Javascript 的 sn-ps 时遇到问题。
1) 我无法创建脚本元素并将其添加到 DOM,因为它可能完全是图像或其他东西。
2) document.write 有效,但它会擦除页面。
3) 我不能使用 innerHTML,除了我动态添加的脚本之外,一切都正常。
4) 我不能使用 textNode,因为当我将它们添加到 DOM 时它不会运行脚本。
每次动态添加时,我都会将实际代码打印到字符串中,而不是运行代码。
谁能帮忙?
谢谢。
附言
这是一些 HTML 的示例,如果我可以让它在 trackingCode 可能是图像或脚本的情况下工作,那么这就是我的答案:
<head>
<script type='text/javascript'>
function test(pixelData){
var body= document.getElementsByTagName('body')[0];
var trackingCode = '<script type=\'text/javascript\'>alert(\'[hi]\');</script>';
var div = document.createElement('div')
trackingCode = trackingCode.replace(/>/g,'>').replace(/</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>
【问题讨论】:
标签: c# javascript .net html dom