国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > AJAX > 正文

Ajax 動態載入html頁面后不能執行其中的js快速解決方法

2024-09-01 08:31:05
字體:
來源:轉載
供稿:網友

事件背景

有一個公用頁面需要在多個頁面調用,其中涉及到部分js已經寫在了公用頁面中,通過ajax加載該頁面后無法執行其中的js。

解決思路

1. 采用附加一個iframe的方法去執行js,為我等代碼潔癖者所不齒。

2. 使用document.write輸出代碼,我等簡潔主義者所不愿。

3. 最簡單的方法是把js放到需要調用的父頁面,那想這樣的公用頁面,每個地方調用都要寫入一次,代碼冗余。

4. eval是個解決方法,雖然低效。

5. 復雜的解決方法:正則匹配出加載頁面中的所有js,為這些js創建同樣多個<script>標簽,把js內容插入即可執行。但使用中發現,firefox可行,但IE還是不從。(師太,您就從了吧~)

解決方案

綜合以上多種方式,排除不利因素,總結出一個比較實用的方法,可以滿足類似這樣公用頁面的執行ajax加載的js的需求,在ajax加載的公用函數里面加上代碼即可。主要代碼如下:

// 第一步:匹配加載的頁面中是否含有jsvar regDetectJs = /<script(.|/n)*?>(.|/n|/r/n)*?<//script>/ig;var jsContained = ajaxLoadedData.match(regDetectJs); //ajaxLoadedData為ajax獲取到的數據// 第二步:如果包含js,則一段一段的取出js再加載執行if(jsContained) {  // 分段取出js正則  var regGetJS = /<script(.|/n)*?>((.|/n|/r/n)*)?<//script>/im;  // 按順序分段執行js  var jsNums = jsContained.length;  for (var i=0; i<jsNums; i++) {    var jsSection = jsContained[i].match(regGetJS);    if(jsSection[2]) {      if(window.execScript) {        // 給IE的特殊待遇        window.execScript(jsSection[2]);      } else {        // 給其他大部分瀏覽器用的        window.eval(jsSection[2]);      }    }  }}

解說下:window.execScript就IE認,其他瀏覽器需要用eval啦。

總結

以上所述是小編給大家介紹的Ajax 動態載入html頁面后不能執行其中的js快速解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 青田县| 华池县| 逊克县| 察雅县| 潞西市| 阳新县| 吐鲁番市| 嘉义市| 华坪县| 鹰潭市| 旅游| 汤阴县| 八宿县| 独山县| 麦盖提县| 壶关县| 社旗县| 襄樊市| 临邑县| 天长市| 武宁县| 宝山区| 辽阳县| 保德县| 岑溪市| 双辽市| 儋州市| 柞水县| 通州区| 龙泉市| 靖江市| 武威市| 达孜县| 高雄县| 永年县| 格尔木市| 甘谷县| 敦煌市| 赞皇县| 孝昌县| 米林县|