现在的位置: 首页 > 综合 > 正文

在document.getElementById(“oDiv”).innerHTML=”JS执行问题”;

2013年11月24日 ⁄ 综合 ⁄ 共 5502字 ⁄ 字号 评论关闭
  1. //======================
  2. //此事例中js代码虽被赋值给oDiv,But js is not executed.
  3. //======================
  4. <script type="text/javascript">
  5.  var callback=function(){
  6.   if (xmlHttp.readyState==4&&xmlHttp.status==200){
  7.      $("#oDiv").innerHTML="<script type='text/javascript'>alert('Hello,World!');</script>";
  8.    }
  9.  }
  10. </script>
  11. //=================================
  12. //Usage execJS.js is solved for it,which is created by NetFriend
  13. //=================================
  14. <script src='execJS.js' type="text/javascript"></script>
  15. <Script language="javascript">
  16. var str="设置InnerHTML的脚本<br/>1:直接写在页面<script>alert(111)</"+"script><br/>2:通过src引入js文件<script 
  17. type='text/javascript' src='hello.js'></"+"script>";
  18. window.onload=function(){
  19.   var djs=document.getElementById('divJS');
  20.   djs.innerHTML=str;//这里直接设置包含有script标签的内容时里面的js脚本无法运行
  21.   
  22.   //第一个参数是需要设置innerHTML的控件的id,第二个参数是需要设置的hmtl字符串,第3个参数是延时多少秒执行,这个可以省
  23. 略,如果省略时默认为10
  24.   set_innerHTML('divJS',str);//需要使用innerhtml.js中的set_innerHTML来执行设置的script标签中的js代码
  25. }
  26. </script>
  27. //========================================
  28. //follow execjs.js
  29. //========================================
  30. /* innerhtml.js 
  31. * Copyright Ma Bingyao <andot@ujn.edu.cn> 
  32. * Version: 1.9 
  33. * LastModified: 2006-06-04 
  34. * This library is free.  You can redistribute it and/or modify it. 
  35. * http://www.coolcode.cn/?p=117 
  36. */ 
  37.   
  38. var global_html_pool = []; 
  39. var global_script_pool = []; 
  40. var global_script_src_pool = []; 
  41. var global_lock_pool = []; 
  42. var innerhtml_lock = null
  43. var document_buffer = ""
  44.   
  45. function set_innerHTML(obj_id, html, time) { 
  46.     if (innerhtml_lock == null) { 
  47.         innerhtml_lock = obj_id; 
  48.     } 
  49.     else if (typeof(time) == "undefined") { 
  50.         global_lock_pool[obj_id + "_html"] = html; 
  51.         window.setTimeout("set_innerHTML('" + obj_id + "', global_lock_pool['" + obj_id + "_html']);", 10); 
  52.         return
  53.     } 
  54.     else if (innerhtml_lock != obj_id) { 
  55.         global_lock_pool[obj_id + "_html"] = html; 
  56.         window.setTimeout("set_innerHTML('" + obj_id + "', global_lock_pool['" + obj_id + "_html'], " + time + ");", 10); 
  57.         return
  58.     } 
  59.   
  60.     function get_script_id() { 
  61.         return "script_" + (new Date()).getTime().toString(36) 
  62.           + Math.floor(Math.random() * 100000000).toString(36); 
  63.     } 
  64.   
  65.     document_buffer = ""
  66.   
  67.     document.write = function (str) { 
  68.         document_buffer += str; 
  69.     } 
  70.     document.writeln = function (str) { 
  71.         document_buffer += str + "/n"
  72.     } 
  73.   
  74.     global_html_pool = []; 
  75.   
  76.     var scripts = []; 
  77.     html = html.split(/<//script>/i); 
  78.     for (var i = 0; i < html.length; i++) { 
  79.         global_html_pool[i] = html[i].replace(/<script[/s/S]*$/ig, ""); 
  80.         scripts[i] = {text: '', src: '' }; 
  81.         scripts[i].text = html[i].substr(global_html_pool[i].length); 
  82.         scripts[i].src = scripts[i].text.substr(0, scripts[i].text.indexOf('>') + 1); 
  83.         scripts[i].src = scripts[i].src.match(/src/s*=/s*(/"([^/"]*)/"|/'([^/']*)/'|([^/s]*)[/s>])/i); 
  84.         if (scripts[i].src) { 
  85.             if (scripts[i].src[2]) { 
  86.                 scripts[i].src = scripts[i].src[2]; 
  87.             } 
  88.             else if (scripts[i].src[3]) { 
  89.                 scripts[i].src = scripts[i].src[3]; 
  90.             } 
  91.             else if (scripts[i].src[4]) { 
  92.                 scripts[i].src = scripts[i].src[4]; 
  93.             } 
  94.             else { 
  95.                 scripts[i].src = ""
  96.             } 
  97.             scripts[i].text = ""
  98.         } 
  99.         else { 
  100.             scripts[i].src = ""
  101.             scripts[i].text = scripts[i].text.substr(scripts[i].text.indexOf('>') + 1); 
  102.             scripts[i].text = scripts[i].text.replace(/^/s*</!--/s*/g, ""); 
  103.         } 
  104.     } 
  105.   
  106.     var s; 
  107.     if (typeof(time) == "undefined") { 
  108.         s = 0; 
  109.     } 
  110.     else { 
  111.         s = time; 
  112.     } 
  113.   
  114.     var script, add_script, remove_script; 
  115.   
  116.     for (var i = 0; i < scripts.length; i++) { 
  117.         var add_html = "document_buffer += global_html_pool[" + i + "];/n"
  118.         add_html += "document.getElementById('" + obj_id + "').innerHTML = document_buffer;/n"
  119.         script = document.createElement("script"); 
  120.         if (scripts[i].src) { 
  121.             script.src = scripts[i].src; 
  122.             if (typeof(global_script_src_pool[script.src]) == "undefined") { 
  123.                 global_script_src_pool[script.src] = true
  124.                 s += 2000; 
  125.             } 
  126.             else { 
  127.                 s += 10; 
  128.             } 
  129.         } 
  130.         else { 
  131.             script.text = scripts[i].text; 
  132.             s += 10; 
  133.         } 
  134.         script.defer = true
  135.         script.type =  "text/javascript"
  136.         script.id = get_script_id(); 
  137.         global_script_pool[script.id] = script; 
  138.         add_script = add_html; 
  139.         add_script += "document.getElementsByTagName('head').item(0)"
  140.         add_script += ".appendChild(global_script_pool['" + script.id + "']);/n"
  141.         window.setTimeout(add_script, s); 
  142.         remove_script = "document.getElementsByTagName('head').item(0)"
  143.         remove_script += ".removeChild(document.getElementById('" + script.id + "'));/n"
  144.         remove_script += "delete global_script_pool['" + script.id + "'];/n"
  145.         window.setTimeout(remove_script, s + 10000); 
  146.     } 
  147.   
  148.     var end_script = "if (document_buffer.match(/<///script>/i)) {/n"
  149.     end_script += "set_innerHTML('" + obj_id + "', document_buffer, " + s + ");/n"
  150.     end_script += "}/n"
  151.     end_script += "else {/n"
  152.     end_script += "document.getElementById('" + obj_id + "').innerHTML = document_buffer;/n"
  153.     end_script += "innerhtml_lock = null;/n"
  154.     end_script += "}"
  155.     window.setTimeout(end_script, s); 
  156. }

抱歉!评论已关闭.