天天看點

ajax重載頁面,Ajax重載頁面js腳本代碼失效的解決辦法

如今Ajax的流行同時也帶來了許多小困惑,因為是頁面的異步分離加載,導緻html和js不是同時進行的,有些是函數取不到元素,有些是綁定不了事件,還有就是内嵌腳本壓根不執行。這些問題對于初學者來說更是摸不着頭腦。這裡整理了兩個針對不同原因圍繞重載頁面代碼js腳本失效的解決方法。

1.一個是頭部外鍊已經引入的js檔案裡面的代碼功能在重載頁面後失效的解決辦法:解決的辦法就是在ajax的回調函數重新通過腳本建立加載一遍該js檔案位址,以下是代碼,簡單明了:

var aa=document.getElementsByTagName('HEAD').item(0);

var nn=document.createElement("script");

nn.src="//www.mizuiren.com/omm.js";

aa.appendChild(nn);

紅色的為js檔案位址,隻要修改這一處就可以用了

2.第二種是内聯的javascript腳本不執行導緻的異常。這種腳本通常是把代碼直接插在html中,如:

alert("這是直接混在html中的js代碼")

然後我們通過ajax得到這段html代碼并把它插在網頁的另一個地方就會出現代碼完全不起作用了。解決辦法就是在ajax請求操作完成後。分析請求回來的html,用正則比對找出代碼塊,通過eval手動把這些代碼塊運作一遍。函數代碼如下:

function evalScript(html)

{

var reg = /

var htmlBlock = html.split("<\/script>");

for (var i in htmlBlock)

{

var blocks;

if (blocks = htmlBlock[i].match(reg))

{

var code = blocks[1].replace(/