如今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(/