2013-01-15 28 views
0

我正在嘗試使用datetimepicker控件(http://timjames.me/jquery-ui-datetimepicker-plugin),但它顯示我的本地js文件在加載時遇到問題 - 但只在IE(版本8.0.6),因爲它在Firefox 18.0版本中正常工作。在IE 8中查看網站時無法加載本地JQuery文件

我使用以佔位符「MainContent」命名的母版頁,所以我的所有子頁面控件都需要由MainContent_引用,後面跟着控件的ID。

在母版頁的元素包含下面的腳本包括:

<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.min.js"></script> 
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.16/jquery-ui.min.js"></script> 
<link rel="stylesheet" type="text/css" href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.16/themes/hot-sneaks/jquery-ui.css" /> 
<script type="text/javascript" src="Scripts/jquery-ui-timepicker-addon.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     alert("hello"); 
     $('#MainContent_calStart').datetimepicker(); 
    }); 
</script> 

script language="javascript" type="text/javascript"> 
    function GetItem(strName) { 
     return document.all ? document.all[strName] : document.getElementById(strName); 
    } 

... etc etc etc 

我的asp.net子頁面包含代碼:

基本上,託管的DateTimePicker的頁面不是第一頁面加載到網站中,但由於包含腳本的母版頁包含(並且無法全部加載它們),所以網站的第一頁加載了js錯誤。

我無法加載/使用IE瀏覽器時,包括在我的網站上的任何地方JQuery的文件,我得到JavaScript錯誤:

網頁錯誤的詳細信息

用戶代理:Mozilla的/ 4.0(兼容; MSIE 8.0;的Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E) 時間戳:2013年一月15日,星期二13:31:47 UTC

消息:語法錯誤 行:3 字符:1 代碼:0 URI:(本地主機上的頁面路徑)

在$('#MainContent_calStart')。datetimepicker();錯誤「Microsoft JScript運行時錯誤:對象不支持此屬性或方法」,表示瀏覽器無法從包含文件中找到datetimepicker窗口小部件的源/聲明。如果我繼續加載站點,儘管js錯誤,datetimepicker部件加載並似乎完全正常工作。

奇怪的是,如果我在VS2010中創建一個示例網站項目幷包含上述文件/代碼,示例網站就可以工作。樣本和我的現場網站之間的唯一區別是在現場網站中還有其他pages/css/js文件。這兩個站點的結構在腳本位置/ css位置等方面是相同的。示例站點在IE和FF中均正常工作。

最後一點,如果我把所有的代碼從jQuery的UI的timepicker-addon.js到母版頁本身並排除js文件,該網站工作。這指出了js代碼在本地文件中未被加載的事實。

任何幫助表示讚賞。乾杯。

Jimmy

PS。我不能包含任何本地js文件,而不僅僅是有問題的文件。

+0

你有沒有找到你的答案? – Rogier

回答

0

當我使用插件(也在jQuery插件本身)使用indexOf(http://www.w3schools.com/jsref)時,我在IE8中發生了同樣的錯誤(Object不支持這個屬性或方法) /jsref_indexof.asp)。 IE8不支持該功能。我將這個函數改成了in.Array的jQuery函數(http://api.jquery.com/jQuery.inArray/),並且足夠愚蠢:它也使用indexOf。

爲了解決這個問題,我將這個函數替換爲一個for-loop,它搜索數組/字符串/ ......只有解決了我在IE8上遇到的問題。

我希望它有幫助!

+0

這裏是你如何在不支持它的瀏覽器中使用polyfill indexOf:http://stackoverflow.com/questions/1744310/how-to-fix-array-indexof-in-javascript-for-ie-browsers –

0

在後面

你的母版頁的代碼試試這個

私人無效AddScript(字符串SRC) { HtmlGenericControl genCtrl =新HtmlGenericControl(); genCtrl。TagName =「腳本」; genCtrl.Attributes.Add(「type」,「text/javascript」); genCtrl.Attributes.Add(「language」,「javascript」); genCtrl.Attributes.Add(「src」,src); Page.Header.Controls.Add(genCtrl); }

protected void Page_Load(object sender, EventArgs e) 
{ 
    // one minute prior to timeout (milliseconds) 
    //timeout = (Session.Timeout * 60000) - 60000; 
    Session.Timeout = 90000; 

    AddScript(Page.ResolveUrl("~/Scripts/jquery-1.6.1.js")); 
    AddScript(Page.ResolveUrl("~/Scripts/jquery-ui.min.js")); 
    //AddScript(Page.ResolveUrl("~/Scripts/jquery-1.4.3.min.js")); 
    //AddScript(Page.ResolveUrl("~/Scripts/jquery.tablesorter.min.js")); 
} 

你需要一個頭runnat = server。

問題可能是您的asp.net網頁不在主頁面的根目錄中,因此您的腳本的路徑不正確。

如果您正在開發一個互聯網站點,而不是使用cdn文件,因爲它可以爲您節省帶寬+ cdn網絡預先加載/緩存大量CDN文件。