将包含外部js的div添加到js中的另一个div不能正确执行

时间:2014-10-06 16:13:10

标签: javascript jquery http iframe web

我在div中调用第三方脚本标记。这个第三方js呈现iframe&把他们的内容放在div我把这个标签放进去。但是我看到了iframe但是头部和iframe的主体中没有任何内容,似乎js没有正确执行&因此我看不到div里面的内容。我可以看到生成的iframe&附加到div但看不到其中的任何内容。这就是我放置第三方标签的方式。(PS基本上第三方脚本标签提取了object1&执行的属性“abc”的值。)

html文件:

< div id= "div2" style="display:none" >
< script >
 var object1 = {
    abc: "this is a fruit"
};
< /script>
<script type="text/javascript" src="thirdpartyjscode.js"></script>
< /div >

js file:

$('#div1').append($('#div2').show());

这段代码会在div1中显示div2但是div2里面的脚本确实得到了evealuated&amp;我看到iframe附加到div2但我看不到其中的任何内容。为什么会这样?我不明白。我读过也许使用eval()会有所帮助,但我不太确定

这是我执行此操作后控制台中的内容。然后我控制了记录“内容”

var content = $('#div2').detach().html();
$('#div1').append('<div>', {
    id: 'div2',
    html: content
});

console.log(内容)给了我以下的内容..但是我没有看到iframe附加到div2

          <script type="text/javascript">
                var object1 = {
                    abc: "this is a fruit"
                };
            </script>



 <script type="text/javascript" src="thirdpartyjscode.js"></script><iframe id="abc_61086936097182" src="" width="610" height="100%" frameborder="0" scrolling="no" marginwidth="0" marginheight="0" style="display: block; height: 871px;"></iframe>

2 个答案:

答案 0 :(得分:1)

将现有DOM元素附加到另一个元素只会移动DOM中的元素。 Javascript仅在添加到DOM时执行,而不是在DOM刚刚重新定位时执行。如果你想要它被执行,你需要复制一份:

var content = $('#div2').detach().html();
$('#div1').append('<div>', {
    id: 'div2',
    html: content
});

答案 1 :(得分:0)

将HTML附加到DOM中不会导致浏览器评估所述附加HTML中的任何脚本标记。

的eval($(&#34;#DIV2&#34;。)发现(&#34;脚本&#34;)文本());

How to execute <script> code in a javascript append