<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                今天我寫了個js彈出模態對話框,這個模態對話框能直接顯示一個html或者是url的文本內容,因為加入我需要在對話框里面顯示比較復雜的布局的話直接用字符串來做是很麻煩且很難修改的。各方面都比較完善了,但是今天,在我想用這個對話框加載一個頁面的時候發現了新問題。 在我的要加載的頁面里面有和用戶的交互過程,這是用js實現的,我把這個頁面加載到我的模態對話框里面,頁面顯示完全正確,可是在測試交互功能的時候發現js沒有響應。我用firebug插件查看,發現里面是有這段js代碼的,但怎么執行不了呢。 于是我將這段js代碼寫在了調用模態對話框的頁面,這樣交互功能恢復正常了。原來使用innerHTML獲得的js代碼是不能被執行的,js只有在頁面初次加載的時候才有效。 網上有很多種解決的方法,有用iframe實現的,有通過瀏覽器的特性實現的,但這些都通通不是我喜愛的方法,要我使用iframe,那還不如我把這個問題放著,每次都把被加載頁面的js拷貝到調用頁面算了。 不過還是找到了一個比較完美的方法,這個方法不僅沒有使用限制,而且還是跨瀏覽器的。我需要的就是這樣的代碼。有時候發現要在網上找到好的代碼簡直比登天還難,因為大部分都是copy的,你可以看到一篇不知所云的垃圾文章被copy了好多份。同樣你也可以看到好多精品文章被copy了好多份而找不到出處。不過話說回來,自己寫文章確實需要很大的耐心,要寫一篇別人都能看懂的文章起碼需要40分鐘,不然你就是在制造垃圾。所以看到好的文章注明出處是一種美德。這篇文章的出處是 http://jcodecraeer.com/a/jquery_js_ajaxjishu/2012/0625/278.html 謝謝轉載,可以不帶鏈接但別破壞了我的代碼格式,不然別人沒法看啊。 說正題。這個方法只需調用一個函數set_innerHTML(obj_id, html, time); set_innerHTML('要插入innerhtml的ID名稱', '要插入的代碼');time參數可以忽略,我急于實現功能就沒去看實現的細節了。 以下是代碼: ~~~ /* innerhtml.js * Version: 1.9 * LastModified: 2006-06-04 * This library is free. You can redistribute it and/or modify it. * */ var global_html_pool = []; var global_script_pool = []; var global_script_src_pool = []; var global_lock_pool = []; var innerhtml_lock = null; var document_buffer = ""; function set_innerHTML(obj_id, html, time) { if (innerhtml_lock == null) { innerhtml_lock = obj_id; } else if (typeof(time) == "undefined") { global_lock_pool[obj_id + "_html"] = html; window.setTimeout("set_innerHTML('" + obj_id + "', global_lock_pool['" + obj_id + "_html']);", 10); return; } else if (innerhtml_lock != obj_id) { global_lock_pool[obj_id + "_html"] = html; window.setTimeout("set_innerHTML('" + obj_id + "', global_lock_pool['" + obj_id + "_html'], " + time + ");", 10); return; } function get_script_id() { return "script_" + (new Date()).getTime().toString(36) + Math.floor(Math.random() * 100000000).toString(36); } document_buffer = ""; document.write = function (str) { document_buffer += str; } document.writeln = function (str) { document_buffer += str + "\n"; } global_html_pool = []; var scripts = []; html = html.split(/<\/script>/i); for (var i = 0; i < html.length; i++) { global_html_pool[i] = html[i].replace(/<script[\s\S]*$/ig, ""); scripts[i] = {text: '', src: '' }; scripts[i].text = html[i].substr(global_html_pool[i].length); scripts[i].src = scripts[i].text.substr(0, scripts[i].text.indexOf('>') + 1); scripts[i].src = scripts[i].src.match(/src\s*=\s*(\"([^\"]*)\"|\'([^\']*)\'|([^\s]*)[\s>])/i); if (scripts[i].src) { if (scripts[i].src[2]) { scripts[i].src = scripts[i].src[2]; } else if (scripts[i].src[3]) { scripts[i].src = scripts[i].src[3]; } else if (scripts[i].src[4]) { scripts[i].src = scripts[i].src[4]; } else { scripts[i].src = ""; } scripts[i].text = ""; } else { scripts[i].src = ""; scripts[i].text = scripts[i].text.substr(scripts[i].text.indexOf('>') + 1); scripts[i].text = scripts[i].text.replace(/^\s*<\!--\s*/g, ""); } } var s; if (typeof(time) == "undefined") { s = 0; } else { s = time; } var script, add_script, remove_script; for (var i = 0; i < scripts.length; i++) { var add_html = "document_buffer += global_html_pool[" + i + "];\n"; add_html += "document.getElementById('" + obj_id + "').innerHTML = document_buffer;\n"; script = document.createElement("script"); if (scripts[i].src) { script.src = scripts[i].src; if (typeof(global_script_src_pool[script.src]) == "undefined") { global_script_src_pool[script.src] = true; s += 2000; } else { s += 10; } } else { script.text = scripts[i].text; s += 10; } script.defer = true; script.type = "text/javascript"; script.id = get_script_id(); global_script_pool[script.id] = script; add_script = add_html; add_script += "document.getElementsByTagName('head').item(0)"; add_script += ".appendChild(global_script_pool['" + script.id + "']);\n"; window.setTimeout(add_script, s); remove_script = "document.getElementsByTagName('head').item(0)"; remove_script += ".removeChild(document.getElementById('" + script.id + "'));\n"; remove_script += "delete global_script_pool['" + script.id + "'];\n"; window.setTimeout(remove_script, s + 10000); } var end_script = "if (document_buffer.match(/<\\/script>/i)) {\n"; end_script += "set_innerHTML('" + obj_id + "', document_buffer, " + s + ");\n"; end_script += "}\n"; end_script += "else {\n"; end_script += "document.getElementById('" + obj_id + "').innerHTML = document_buffer;\n"; end_script += "innerhtml_lock = null;\n"; end_script += "}"; window.setTimeout(end_script, s); } ~~~ 有了這個方法,原來這樣寫 `document.getElementById("sch_nameArea").innerHTML= text;` 的地方就可以寫成這樣 `set_innerHTML('sch_nameArea',text);` 值得注意的是,這個代碼用到了一些全局變量, ~~~ var global_html_pool = []; var global_script_pool = []; var global_script_src_pool = []; var global_lock_pool = []; var innerhtml_lock = null; var document_buffer = ""; ~~~ 至少你應該盡可能的避免和這些全局變量沖突。決絕全局變量沖突的良策貌似是使用閉包,最近正在學習這些概念,如果你是一個嚴謹的人,我覺得有必要重寫這段代碼,讓它更靈活和穩定。 最后向寫這段代碼的濟南大學馬秉堯老師致敬!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看