【问题标题】:Running HTML/Javascript Dynamically动态运行 HTML/Javascript
【发布时间】: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 = '&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>

【问题讨论】:

    标签: c# javascript .net html dom


    【解决方案1】:

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

    在将其粘贴到元素中之前尝试使用 code=escape(code)。

    【讨论】:

    • 脚本显示为文本。当我转义 javascript 字符串时,它会将其粘贴为编码文本但没有运行它。
    猜你喜欢
    • 2011-06-14
    • 2021-11-13
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多