我的Google闭包代码存在问题。 我正在尝试使用HTML5历史记录功能实现应用程序。
但不幸的是,这不起作用,因为我在Chrome上获得了“无法读取属性”HTML5HISTORY'未定义',而且在Firefox中“goog.history未定义”。
基本上,“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();
}
});
}
答案 0 :(得分:2)
在您的脚本包括之前,在单独的JavaScript文件或标记中包含所有导入(goog.require()调用)。
注意:不要将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>