2

我的 Google 关闭代码有问题。我正在尝试使用 HTML5 History 功能实现一个应用程序。

但不幸的是,这不起作用,因为我在 Chrome 上得到一个“无法读取属性 'HTML5HISTORY' OF UNDEFINED”,而在 Firefox 上得到一个“goog.history is undefined”。

基本上,“var h”永远不会用 History 实例创建,因为我从“try/catch”循环中得到错误,并显示 error.message。

我真的不知道是什么问题...

多谢你们

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.require() 语句放在与使用 goog.required 函数或类的代码的入口点相同的脚本标记中。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 回答