有乙個公用頁面需要在多個頁面呼叫,其中涉及到部分js已經寫在了公用頁面中,通過ajax載入該頁面後無法執行其中的js。
1. 採用附加乙個iframe的方法去執行js,為我等**潔癖者所不齒。
2. 使用document.write輸出**,我等簡潔主義者所不願。
3. 最簡單的方法是把js放到需要呼叫的父頁面,那想這樣的公用頁面,每個地方呼叫都要寫入一次,**冗餘。
4. eval是個解決方法,雖然低效。
5. 複雜的解決方法:正則匹配出載入頁面中的所有js,為這些js建立同樣多個標籤,把js內容插入即可執行。但使用中發現,firefox可行,但ie還是不從。(師太,您就從了吧~)
綜合以上多種方式,排除不利因素,總結出乙個比較實用的方法,可以滿足類似這樣公用頁面的執行ajax載入的js的需求,在ajax載入的公用函式裡面加上**即可。主要**如下:
// 第一步:匹配載入的頁面中是否含有js
var regdetectjs = /(.|\n|\r\n)*?<\/script>/ig;
var jscontained = ajaxloadeddata.match(regdetectjs);
// 第二步:如果包含js,則一段一段的取出js再載入執行
if(jscontained) {
// 分段取出js正則
var reggetjs = /((.|\n|\r\n)*)?<\/script>/im;
// 按順序分段執行js
var jsnums = jscontained.length;
for (var i=0; i解說下:window.execscript就ie認,其他瀏覽器需要用eval啦。
至此,算比較完美的解決。
[**: ]
ajax 執行頁面js
第一步 匹配載入的頁面中是否含有js var regdetectjs n r n script ig var jscontained sstr.match regdetectjs 第二步 如果包含js,則一段一段的取出js再載入執行 if jscontained 分段取出js正則 var regge...
JS執行與頁面載入
我是在csdn的技術問答中看到 js中有沒有jquery.ready這樣的方法 這個問題後,再看到兩篇不錯的文章 深入分析jquery的ready函式是如何工作的 工作原理 jquery document ready 與window.onload的區別 js中定義的事件 window.onload或...
頁面自動執行(載入)js
一 js方法 1.最簡單的呼叫方式,直接寫到html的body標籤裡面 load 2.在js語句呼叫 3。js呼叫 onload方法 二 jq方法 1.整個頁面的document全部載入完成以後執行。不幸的這種方式不僅要求頁面的dom tree全部載入完成,而且要求所有的外部和資源全部載入完成。更不...