执行用.innerHTML插入的src脚本

时间:2015-08-19 13:59:14

标签: javascript json

我正在使用Blogger。我有一个函数(showmusic,它以json代码作为参数)显示我的帖子,我这样称呼它:

<script src='/feeds/posts/default/-/Album/Pop?max-results=20&orderby=published&alt=json-in-script&callback=showmusic'></script>

我正在寻找一种方法来更改带有<select>标签的标签(“Album”和“Pop”),为此我需要使用innerHTML插入该脚本,但脚本不会执行:

function myFunction(label1,label2) {
  var label1 += "/";
  var label2 += "/";
  var script = "\x3Cscript src='/feeds/posts/default/-/"+label1+label2+"?max-results=20&amp;orderby=published&amp;alt=json-in-script&amp;callback=showmusic'>\x3C/script>"
  document.getElementById("my-container").innerHTML = script;
}

2 个答案:

答案 0 :(得分:1)

尝试一下:

function myFunction( label1, label2 ) {
    var s = document.createElement( "script" );
    s.type = "text/javascript";
    s.async = true;
    s.src = "/feeds/posts/default/-/" + label1 + label2 + "?max-results=20&amp;orderby=published&amp;alt=json-in-script&amp;callback=showmusic";
    document.getElementById( "my-container" ).appendChild( s );
}  

我做了简单的测试。使用以下内容创建HTML页面:

<!DOCTYPE html>
<html>
    <head>
        <title>Test</title>
        <script type="text/javascript">
            function getJavascript() {
                var s = document.createElement( "script" );
                s.type = "text/javascript";
                s.async = true;
                s.src = "get_javascript.js";
                document.getElementById( "javascriptHolder" ).appendChild( s );
            }
        </script>
    </head>
    <body>
        <button type="button" onclick="getJavascript();">Get Javascript</button>
        <div id="javascriptHolder"></div>
    </body>
</html>  

并使用此文件get_javascript.js

alert( 'I am from Javascript' );  

当我点击按钮时,一切都像魅力一样。

答案 1 :(得分:0)

除非插入标记的脚本在HTML中内嵌,否则这是不可能的,但此时,为什么不在那里插入标记呢?

如果注入脚本作为引用加载,则不会执行注入的脚本标记;当你的脚本运行时注入DOM已经加载的标记,并且不会执行加载时不存在的任何脚本。