2012-09-11 40 views
0

在我的主頁工作,我要檢查,如果沒有加載,包括edit_profile.js腳本追加腳本元素的頭部與JavaScript並沒有在Chrome

$(function(){ 


    if (typeof is_editprofilejs_loaded == "undefined") { 

     alert('undefined'); 
     var e = document.createElement("script"); 
     e.src = base_url+"js/edit_profile.js"; 
     e.type = "text/javascript"; 
     document.getElementsByTagName("head")[0].appendChild(e); 

    } 
    else 
    { 

     alert('its loaded.'); 

    } 



}) 

,並在我的script.js我有

$(function(){ 
     var is_editprofilejs_loaded = true ; 
     alert('now its loaded ! '); 
     //some code 
    }) 

所以,當我在Firefox的運行我的代碼,我得到這些消息

1 - undefined 
2 - now its loaded ! 

但在鉻我只是得到

1 - undefined 

,當然在包括頁面的代碼不起作用 什麼錯?

+1

你檢查腳本是否實際添加到DOM,並從服務器請求? – JCOC611

+0

因爲您使用的是jQuery,我會嘗試使用'$ .getScript'。 [這是關於這個的文檔。](http://api.jquery.com/jQuery.getScript/) – lbstr

+0

'base_url'的值是什麼? – some

回答

1

爲什麼你在domready中的功能這些功能?

這也是失敗的原因:您的變量is_editprofilejs_loaded對於該匿名函數是本地的,並且永遠不會在主文件的函數中定義。

  • 刪除不必要的功能和/或
  • 把這些變量明確全球通過分配window.is_editprofilejs_loaded = true並通過if (window.is_editprofilejs_loaded)

BTW檢查它,你script.js缺少到底); - 不知道只有AC & p錯誤

+0

嗯......爲什麼會這樣防止文件被加載?它應該始終加載文件,而不管它是否在之前加載。我錯過了什麼? – some

+0

@some如果我理解正確,文件*爲*加載,但由於警報消息是'DOMready'函數中,這是從來沒有執行過程中(DOM已準備就緒)。 – lbstr

+0

從[jQuery文檔](http://api.jquery.com/ready/):*「如果.ready()在DOM初始化後被調用,則傳入的新處理程序將立即執行。」*以下語法是等價的:'$(文件)。就緒(處理);','$()準備就緒(處理);'和'$(處理);' – some