2

Google 閉鎖コードに問題があります。HTML5 履歴機能を使用してアプリを実装しようとしています。

しかし残念ながら、Chrome では「CANNOT READ PROPERTY 'HTML5HISTORY' OF UNDEFINED」、Firefox では「goog.history is undefined」が表示されるため、これは機能しません。

「try/catch」ループからエラーが発生し、error.message が表示されるため、基本的に「var h」は履歴インスタンスで作成されません。

何が問題なのか本当にわかりません...

みんなありがとう

goog.require('goog.events');
goog.require('goog.events.EventTarget');
goog.require('goog.history.EventType');
goog.require('goog.history.Html5History');
goog.require('goog.Uri');

var h;

try {

 h = new goog.history.Html5History();

} catch (e) {

     document.write(e.message);
}

if (h) {

    var cur = 'kittens';

    goog.events.listen(h, goog.history.EventType.NAVIGATE, function(e) {
        var token = e.token || 'kittens';

        var next = document.getElementById(token);

        if (next) {

            document.getElementById(cur).className = 'section';
            next.className = 'section active';
            cur = token;
        }
    });

    h.setUseFragment(false);
    h.setPathPrefix(new goog.Uri(document.location.href).getPath() + '/');
    h.setEnabled(true);

    goog.events.listen(document.getElementById('links'), 'click', function(e) {

        if (e.target.tagName == 'A') {

            h.setToken(e.target.getAttribute('token'), e.target.title);
            e.preventDefault();
        }
    });
 }
4

1 に答える 1

2

このスクリプトを含める前に、すべてのインポート(goog.require()呼び出し)を別のJavaScriptファイルまたはタグに含めます。

ドキュメントによると:

注:goog.required関数またはクラスを使用するコードへのエントリポイントと同じスクリプトタグにgoog.require()ステートメントを配置しないでください。goog.require()呼び出しは、呼び出しを含むスクリプトタグの後にコードをドキュメントに追加します。たとえば、このコードは機能します。

<script src="closure-library/closure/goog/base.js"></script>
<script>
  goog.require('goog.dom');
</script>
<script>
  var newHeader = goog.dom.createDom('h1');
</script>

対照的に、次のコードはエラーを生成します。

<script src="closure-library/closure/goog/base.js"></script>
<script>
  // DON'T DO THIS.
  goog.require('goog.dom');
  var newHeader = goog.dom.createDom('h1');
</script>
于 2012-08-10T17:13:43.637 に答える