5

sammy.jsシングルページアプリケーションでプラグインを使用しています。プラグインが機能していません。ユーザーがページ内を移動しようとすると、コンソールに次のエラーが表示されます。

[Tue Dec 04 2012 17:48:13 GMT+0530 (India Standard Time)] #main 404 Not Found get /page_home  
Error
arguments: undefined
get stack: function () { [native code] }
message: "404 Not Found get /page_home "
set stack: function () { [native code] }
type: undefined
__proto__: d

この問題は何ですか?どうすれば修正できますか?

編集

サミー構成コード:

 var app = $.sammy('#main', function () {
        this.get('#/:name', function () {
            var id = this.params['name'];
            $.trim(id);
            var flag = true;

            if ($("#main").hasClass("presentation")) {
                $.each(slides, function (i, v) {
                    if ($(v).attr("class") == id) {
                        ScanNavigationD(id);
                        flag = false;
                        return false;
                    }
                });
                if (flag) {
                    ScanNavigationD($(slides[0]).attr("class"));
                }
            }
            else if ($("#main").hasClass("printdoc") || typeof $("#main").attr("class") == "undefined") {
                $.each(Pages, function (i, v) {
                    if ($(v).attr("class") == id) {
                        ScanNavigationD(id);
                        flag = false;
                        return false;
                    }
                });
                if (flag) {
                    ScanNavigationD($(Pages[0]).attr("class"));
                }
            }
        });
    });

    $(function () {
        app.run();
    });
4

3 に答える 3

2

@tom-rider 問題は、引数なしで呼び出される app.run です。sammy app.run 関数は、URL が変更されたかどうかを確認するために _checkLocation メソッドを呼び出す前に、(_setLocation メソッドを介して) アプリの現在の場所を設定するための start_url 引数を受け入れます...

app.run();

app.run('#/');

これは私のために働きます。

動作するデモについては、このフィドルに従ってください。コンソールを見てください。エラーはありません!

于 2012-12-11T03:14:52.683 に答える
0

page_home404 not found エラーに解決するスクリプトを実行するときに、パラメーターとして送信しているようです。これがどこから来ているかを見つけるために、ファイル全体で「page_home」を再帰的に探してみてください。

于 2012-12-11T22:59:43.033 に答える
0

この単純なコードは機能しますか?

var app = $.sammy('#main', function () {
    this.get('#/:name', function () {
        alert(this.params['name']);
    });
});

$(function () {
    app.run();
});

この小さなコードが 'page_home' を警告する場合、内部のスクリプトに何か問題があります: 次の質問に答えることができるはずです: ScanNavigationD 関数はどこにありますか? 「スライド」/「ページ」はどこにありますか - 配列は定義されていますか?

編集:

わかりました、私は自分のコンピューターで別のテストを行いました。それが私がしたことです:

  1. HTMLドキュメントを作成しました
  2. 最初に jQuery を含め、次に sammy.js を含めました

    <script src="http://code.jquery.com/jquery-1.8.3.min.js" type="text/javascript">

    <script src="sammy.js" type="text/javascript">

  3. 私はダミーコンテンツで私が求めた変数と関数を埋めました:

    <スクリプト>

    var ScanNavigationD = function() {}, スライド = ['slide1', 'slide2'], ページ = ['page1', 'page2'];

    <スクリプト>

  4. 次に、あなたのコードを私のhtmlドキュメントにコピーして貼り付けました。

    <script> //コード <script>

  5. 次に、div-main コンテナーを作成しました。

すべてが機能しました。あなたが間違っていることを私が最後に見たのは、あなたがローカルファイルシステムにいるだけだということです。

sammy.js を実行するには Web サーバーが必要なようです。少なくともローカルホスト!

file://...

動作しないでしょう

于 2012-12-08T20:24:20.120 に答える