Javascript-将<script> </script>附加到Div

时间:2018-08-21 19:27:31

标签: javascript

我正在尝试使用Javascript将广告脚本代码附加到我的div中。但是,我看到的每个示例都已经尝试过并且不起作用。

任何帮助将不胜感激。

示例:

$bkpk_fa_code = '\f001';
var div = document.getElementById('divname');

div.innerHTML += '<script type="text/javascript">
	atOptions = {
    'format' : 'iframe',
		'height' : 60,
		'width' : 468,
		'params' : {} };
     document.write('<scr' + 'ipt type="text/javascript" src="http' + (location.protocol === 'https:' ? 's' : '') + '://www.testinghost.com/ads.js"></scr' + 'ipt>');
</script>';

2 个答案:

答案 0 :(得分:1)

我认为这种方式更清洁:

    var div = document.getElementById('divname');
    
    const script = document.createElement("script");
    script.src = 'https://stacksnippets.net/scripts/snippet-javascript-console.min.js?v=1';

    // optinal options
    /*
    script.onload = () => {
        resolve();
    };
    script.onerror = () => {
        resolve();
    };
    script.type = "text/javascript";
    script.async = true;
    script.defer = true; */
    
    div.appendChild(script);
<div id="divname"></div>

答案 1 :(得分:0)

我假设您也在尝试插入atOptions对象供您的广告javascript使用?

您遇到麻烦的主要方面是该对象中的语法错误(我不确定您是否尝试使用多行字符串吗?)以及可能未做任何事情(取决于时间)的document.write。您执行了脚本)。

以下更正示例的主要功能:

  • 使用document.createElement而不是使用innerHTML创建脚本标签-严格来说,这不是必须的,innerHTML可以工作,但是它可以避免像'<scr'+'ipt>'这样愚蠢的事情。

  • 您可以使用协议相对URL,而不必查找location.protocol。 "//foo.com"将使用与当前页面使用的协议匹配的协议。 (但是,即使当前页面未使用SSL,加载广告脚本时最好使用simply use https,除非该广告脚本无法解决此问题。)

  • 将atOptions对象压缩为一行,以便于插入。 (您可以在大多数现代的浏览器中使用ES6 template literals,但这足够小,因此没有必要。)

var div = document.getElementById('divname');

var s1 = document.createElement('script');
s1.type = 'text/javascript';
s1.innerHTML = 'atOptions = {format: "iframe", height: 60, width: 468, params: {}};';

var s2 = document.createElement( 'script' );
s2.type = 'text/javascript';
s2.src = "//www.testinghost.com/ads.js";
div.appendChild( s1 );
div.appendChild( s2 ); 

// confirm it worked:
console.log(div.innerHTML)
<div id="divname"></div>