Javascript iframe without src with nested scripts -
is possible create iframe scripts in head element, before iframe being inserted dom , have scripts onload="alert(1)"
fire when ready?
example 1, using nested scripts:
var iframe = jquery("<iframe></iframe>"); var scripts = '' + '<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js" onload="alert(1);"><\/script>' + '<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.3/cfinstall.min.js" onload="alert(2);"><\/script>'; iframe.html(scripts); jquery("body").append(iframe);
example two, bigger:
function loadscript(path, callback, appendto) { var element = document.createelement('script'); element.setattribute ("type", 'text/javascript'); element.setattribute ("src", path); return loadelement(element, callback, appendto); } function loadelement(element, callback, appendto) { element.loaded = false; if (element.readystate){ // ie element.onreadystatechange = function(){ if (element.readystate == "loaded" || element.readystate == "complete"){ element.onreadystatechange = null; loadelementonload(element, callback); } }; } else { // others element.onload = function() { loadelementonload(element, callback); }; } (appendto).appendchild(element); return element; } function loadelementonload(element, callback) { if (element.loaded != true) { element.loaded = true; if ( callback ) callback(element); } } function loadscriptnew1(src, callback, appendto) { loadscript(src, callback, appendto) } var iframe = jquery("<iframe></iframe>"); loadscriptnew1("http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js", function() { alert(11) }, iframe.get(0) ) loadscriptnew1("http://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.3/cfinstall.min.js", function() { alert(22) }, iframe.get(0) ) jquery("body").append(iframe)
none of these ways trigger onload functions' alert
;
is possible? scripts gets loaded in both cases, window objects set, no callback.
try this:
<html> <head> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script type="text/javascript"> function insertiframe() { var iframe = $('<iframe></iframe>').appendto('body')[0]; // switch straight js var script = iframe.contentwindow.document.createelement("script"); script.type = "text/javascript"; script.src = "//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"; script.onload = function() { alert(1); }; iframe.contentwindow.document.body.appendchild(script); } </script> </head> <body onload="insertiframe()"> </body>
Comments
Post a Comment