将脚本标记放在div中并执行

时间:2013-01-19 10:53:38

标签: c# javascript .net

我正在为我的网站建立一个小型广告系统,以便我可以在数据库中添加新广告。大多数广告都包含图片,我只会将图像作为innerhtml写入div。这很好用。 但是,某些广告仅包含应放置在需要广告的位置的脚本标记。因为我必须从.NET后面的代码或者ajax调用中动态地执行此操作,所以我遇到了一些问题。 只需设置这样的div的innerhtml:

<div id="asdf" runat="server">
    <script type="text/javascript" src="xxxxx"></script>
</div>

...将无效,因为它不会被执行。无论我是在页面加载后面的代码中设置它,还是使用ajax调用设置它。

我可能会以某种方式调用eval(),但这并不能保证如果我做对了,脚本将被准确放置在我想要的位置。

有什么想法吗?这不是一个新问题,许多广告网络都有脚本标签而不是图像等。

修改:javascript文件位于其他域中。如果我将src属性设置为仅包含警报的本地文件,一切正常!你不能跨域发生这种情况吗?

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

var script = document.createElement('script');
script.src = 'xxxxxx';
script.type = 'text/javascript';
var div = document.getElementById('asdf');
div.appendChild(script);

答案 1 :(得分:0)

如果您知道要添加文件的来源,可以动态添加脚本标记,如下所示:

    // Get head object from DOM.
var head_obj = document.getElementsByTagName('HEAD').item(0);

// Create script object.
var script_obj  = document.createElement( 'script' );
script_obj.type = 'text/javascript';
script_obj.src  = File_Path;

// Define functions to be called on script load and load body.
script_obj.onload = onLoadFunc;

// Appendnd script object to the head object.
head_obj.appendChild( script_obj );

希望有所帮助