1

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

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

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

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

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

编辑: javascript 文件位于另一个域。如果我将 src 属性设置为仅包含警报的本地文件,一切正常!你不能跨域做到这一点吗?

4

2 回答 2

1

你可以试试这个:

var script = document.createElement('script');
script.src = 'xxxxxx';
script.type = 'text/javascript';
var div = document.getElementById('asdf');
div.appendChild(script);
于 2013-01-19T11:16:48.367 回答
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 );

希望有帮助

于 2013-01-19T11:14:00.097 回答