1. ホーム
  2. javascript

[解決済み] Javascript IE エラー: メソッドまたはプロパティアクセスへの予期せぬ呼び出し

2022-02-14 14:45:29

質問

次のようなコードで、IE以外では(通常通り)動作しています。Jqueryのメソッドまたはプロパティへのアクセスで予期しない呼び出しがあり、デバッグの方法がわかりません。IE開発者ツールバーを使っていますが、このエラーには役に立たず、12行目(jqueryスクリプトの中)が表示されるだけです。

よろしくお願いします。

<script type="text/javascript">
$(document).ready(function () {

    $.history.init(pageload);

    $('a[href=' + window.location.hash + ']').addClass('selected');

    $('a[rel=ajax]').click(function () {

        var hash = this.href;
        hash = hash.replace(/^.*#/, '');
        $.history.load(hash);

        $('a[rel=ajax]').removeClass('selected');
        $(this).addClass('selected');
        $('.loading').show();

        getPage();

        return false;
    });
});

function pageload(hash) {
    if (hash) getPage();
}

function getPage() {

    hash = document.location.hash;
    hash = hash.replace(/^.*#/, '');
    var data = 'page=' + encodeURIComponent(hash);
    $.ajax({
        url: "index.php",
        type: "POST",
        data: data,
        cache: false,
        success: function (html) {
            $('.loading').hide();
            $('tbody').html(html);

        }
    });
}
</script>

以下は履歴プラグインです。 http://plugins.jquery.com/project/history

そして、私が追っているデモはこちらです。 http://plugins.jquery.com/project/history

window.locationをdocument.locationに戻しても変化がないようです。

これは迷いますね。呼び出しているタグを変更すると投稿されるので動作しているのですが、IEではデザインがすべて崩れてしまい、次にクリックしたリンクが投稿されません。本当に不思議です! FirefoxやOperaなどでは問題なく動作します。

どうすればいいですか?

IEが文句を言うとはちょっと驚きですが、それはそれで良いことです。での宣言が抜けていますね。 getPage に対して hash (例) var を最初の使用の前に置く)。

他は、暗黙のうちにグローバルなもの(例えば、"C "のプロパティ)を作成していると思われます。 window というオブジェクトがあります。 hash ) であり、これはもちろん 悪いこと (tm)ですが、私の理解では、仕様書によると正しいです(関連するセクションは 8.7 ["The Reference 型"] と 10.1.4 ["Scope Chain and Identifier Resolution"] を参照してください)。

それにしてもIEが文句を言うとは驚きです。これは、jQueryがクリックハンドラを呼び出すスコープと関係があるのでしょう。