0

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 エラーで読み込まれます。

Javascript エラーが発生するため、IE を使用している場合、ローカル JQuery ファイルをサイトにロード/インクルードできません。

Web ページのエラーの詳細

ユーザー エージェント: 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: (localhost のページへのパス)

$('#MainContent_calStart').datetimepicker(); 行でサイトが爆発します。「Microsoft JScript ランタイム エラー: オブジェクトはこのプロパティまたはメソッドをサポートしていません」というエラーが表示され、ブラウザーがインクルード ファイル内から datetimepicker ウィジェットのソース/宣言を見つけることができなかったことを示します。js エラーにもかかわらずサイトの読み込みを続けると、datetimepicker ウィジェットが読み込まれ、完全に機能しているように見えます。

奇妙なことに、コードを取得して VS2010 でサンプル Web サイト プロジェクトを作成し、上記のファイル/コードを含めると、サンプル サイトが機能します。サンプルと私のライブ サイトの唯一の違いは、ライブ サイトに追加の pages/css/js ファイルがあることです。2 つのサイトの構造は、スクリプトの場所/css の場所などに関して同じです。サンプル サイトは IE と FF の両方で正常に動作します。

最後に、すべてのコードを jquery-ui-timepicker-addon.js からマスター ページ自体に移動し、js ファイルを除外すると、サイトは機能します。これは、ローカル ファイルにあるときに js コードが読み込まれていないことを示しています。

どんな助けでも大歓迎です。乾杯。

ジミー

PS。問題のファイルだけでなく、ローカルのjsファイルを含めることはできません。

4

2 に答える 2

0

マスターページのコードビハインドでこれを試してください

private void AddScript(string src) { HtmlGenericControl genCtrl = new HtmlGenericControl(); genCtrl.TagName = "スクリプト"; genCtrl.Attributes.Add("type", "text/javascript"); genCtrl.Attributes.Add("言語", "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 Web ページがないため、スクリプトへのパスが正しくない可能性があります。

インターネット サイトを開発している場合は、帯域幅を節約できるので、むしろ cdn ファイルを使用してください。さらに、多数の CDN ファイルが cdn ネットワークによってプリロード/キャッシュされます。

于 2013-01-15T13:46:11.520 に答える
0

indexOf (http://www.w3schools.com/jsref/jsref_indexof.asp) を使用するプラグイン (jQuery プラグイン自体でも) を使用したときに、IE8 で同じエラー (オブジェクトはこのプロパティまたはメソッドをサポートしていません) が発生しました。 )。この関数は、何らかの理由で IE8 ではサポートされていません。この関数を jQuery の in.Array 関数 (http://api.jquery.com/jQuery.inArray/) に変更しましたが、これも indexOf を使用しています。

それを解決するために、この関数を配列/文字列/...を検索するforループに置き換えました.IE8で私の問題を解決しただけです。

それが役立つことを願っています!

于 2013-01-15T13:46:46.153 に答える