Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过DOM、insertAdjacentHTML或document.write向IFRAME添加脚本_Javascript_Iframe_Sandbox - Fatal编程技术网

Javascript 通过DOM、insertAdjacentHTML或document.write向IFRAME添加脚本

Javascript 通过DOM、insertAdjacentHTML或document.write向IFRAME添加脚本,javascript,iframe,sandbox,Javascript,Iframe,Sandbox,我需要将脚本添加到沙盒IFRAME中,我试图避免使用文档。编写(请参见和),但DOM版本没有按顺序执行脚本。在下面的示例中,jQuery在执行内联脚本时尚未加载,而document.write版本首先加载jQuery,然后执行内联脚本 出于我的目的(确保在运行内嵌脚本之前加载所有前导库,请参阅)document.write可能是正确的方法(但DOM更好,只是没有按应有的方式工作),但我更希望在确保按顺序执行脚本标记的同时,尽可能允许异步下载 我有一种感觉,DOM方法确保了srced脚本标记的顺序

我需要将脚本添加到沙盒IFRAME中,我试图避免使用
文档。编写
(请参见和),但DOM版本没有按顺序执行脚本。在下面的示例中,jQuery在执行内联脚本时尚未加载,而
document.write
版本首先加载jQuery,然后执行内联脚本

出于我的目的(确保在运行内嵌脚本之前加载所有前导库,请参阅)
document.write
可能是正确的方法(但DOM更好,只是没有按应有的方式工作),但我更希望在确保按顺序执行脚本标记的同时,尽可能允许异步下载

我有一种感觉,DOM方法确保了
src
ed脚本标记的顺序,但不保证内联标记的顺序。。。但是,如果有人能帮我得到一个能与DOM一起工作的版本,以预期的顺序执行脚本,那就太好了

还有。。。谁能给我解释一下为什么
insertAdjacentHTML
版本根本不起作用

<html>
    <head>
        <title>Testing DOM -vs- document.write Script additions...</title>
        <script>
            var $sandboxWin,
                $jQuery = document.createElement('script'),
                $script = document.createElement('script'),
                $head = document.head,
                sType = "insert"
            ;

            $head.insertAdjacentHTML('afterbegin', '<iframe id="neek" style="display:none;" sandbox="allow-scripts allow-same-origin"></iframe>');
            $sandboxWin = document.getElementById("neek").contentWindow;

            switch (sType) {
                case "dom": {
                    $jQuery.type = "text/javascript";
                    $jQuery.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js";
                    $sandboxWin.document.head.appendChild($jQuery);

                    $script.type = "text/javascript";
                    $script.text = "console.log('via appendChild:'); console.log($);"; //.innerHTML
                    $sandboxWin.document.head.appendChild($script);
                    break;
                }
                case "insert": {
                    $sandboxWin.document.head.insertAdjacentHTML('afterbegin', "<script src='jquery.min.js'><\/script>");
                    $sandboxWin.document.head.insertAdjacentHTML('afterbegin', "<script>console.log('via insertAdjacentHTML:'); console.log($);<\/script>");
                    break;
                }
                default : {
                    $sandboxWin.document.write(
                        "<script src='jquery.min.js'><\/script>" +
                        "<script>" + 
                            "console.log('via document.write:'); console.log($);" +
                        "<\/script>"
                    );
                    $sandboxWin.document.close();
                }
            }
        </script>
    </head>
    <body>
        Testing DOM -vs- document.write Script additions...
    </body>
</html>

正在测试DOM-vs-document.write脚本添加。。。
var$sandboxWin,
$jQuery=document.createElement('script'),
$script=document.createElement('script'),
$head=document.head,
sType=“插入”
;
$head.insertAdjacentHTML('afterbegin','');
$sandboxWin=document.getElementById(“neek”).contentWindow;
开关(sType){
案例“dom”:{
$jQuery.type=“text/javascript”;
$jQuery.src=”https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js";
$sandboxWin.document.head.appendChild($jQuery);
$script.type=“text/javascript”;
$script.text=“console.log('via appendChild:');console.log($);”;//.innerHTML
$sandboxWin.document.head.appendChild($script);
打破
}
案例“插入”:{
$sandboxWin.document.head.insertAdjacentHTML('afterbegin',“”);
$sandboxWin.document.head.insertAdjacentHTML('afterbegin',“console.log('via insertAdjacentHTML:');console.log($);”;
打破
}
默认值:{
$sandboxWin.document.write(
"" +
"" + 
“console.log('通过document.write:');console.log($);”+
""
);
$sandboxWin.document.close();
}
}
正在测试DOM-vs-document.write脚本添加。。。