簡體   English   中英

在IE 8中查看網站時無法加載本地JQuery文件

[英]Cannot load local JQuery file when viewing site in IE 8

我正在嘗試使用datetimepicker控件(http://timjames.me/jquery-ui-datetimepicker-plugin),但看來我的本地js文件無法加載-但僅在IE(版本8.0.6)中有效在Firefox 18.0版中很好。

我使用一個以占位符“ 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時,由於出現Javascript錯誤,我無法將任何本地JQuery文件加載/包含到我的站點中:

網頁錯誤詳細信息

用戶代理: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年1月15日13:31:47 UTC

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

該站點在$('#MainContent_calStart')。datetimepicker();行炸彈。 錯誤“ Microsoft JScript運行時錯誤:對象不支持此屬性或方法”,表明瀏覽器無法從包含文件中找到datetimepicker小部件的源/聲明。 如果盡管出現js錯誤,但我仍繼續加載網站,則datetimepicker小部件將加載並似乎功能齊全。

奇怪的是,如果我使用代碼並在VS2010中創建一個示例網站項目,並包含上述文件/代碼,則該示例站點可以正常工作。 該示例與我的實時站點之間的唯一區別是,實時站點中還有其他頁面/ css / js文件。 這兩個站點的結構在腳本位置/ css位置等方面是相同的。示例站點在IE和FF中都可以正常工作。

最后一件事,如果我將所有代碼從jquery-ui-timepicker-addon.js移到母版頁本身,並且排除js文件,則該站點可以正常工作。 這表明在本地文件中未加載js代碼的事實。

任何幫助表示贊賞。 干杯。

吉米

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

在后面的母版頁代碼中嘗試此操作

私有無效AddScript(string src){HtmlGenericControl genCtrl = new 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網頁不在母版頁所在的根目錄中,因此腳本的路徑不正確。

如果您正在開發一個Internet站點,請使用CDN文件,因為它可以節省帶寬+ CDN網絡預先加載/緩存了許多CDN文件。

當我使用使用indexOf(http://www.w3schools.com/jsref/jsref_indexof.asp)的插件(也在jQuery插件本身中)時,在IE8中出現了相同的錯誤(對象不支持此屬性或方法) )。 IE8不支持此功能。 我將此函數更改為jQuery的in.Array函數(http://api.jquery.com/jQuery.inArray/),並且非常愚蠢:這也使用indexOf。

為了解決這個問題,我將該函數替換為for循環,該循環搜索array / string / ...僅解決了IE8上的問題。

希望對您有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM