Javascript History.js不在Firefox 13+中工作;和歌剧12+;给麦克。适用于Chrome 21+;虽然
我一直在想到底出了什么问题。我所做的实现与Github Wiki页面中的示例非常相似 下面是代码示例。感谢您的帮助。干杯Javascript History.js不在Firefox 13+中工作;和歌剧12+;给麦克。适用于Chrome 21+;虽然,javascript,jquery,html,history.js,Javascript,Jquery,Html,History.js,我一直在想到底出了什么问题。我所做的实现与Github Wiki页面中的示例非常相似 下面是代码示例。感谢您的帮助。干杯 $(document).ready(function() { var History = window.History; $.expr[':'].internal = function(obj, index, meta, stack){ var rootUrl = History.getRootUrl() var
$(document).ready(function() {
var History = window.History;
$.expr[':'].internal = function(obj, index, meta, stack){
var rootUrl = History.getRootUrl()
var
$this = $(obj),
url = $this.attr('href')||'',
isInternalLink;
isInternalLink = url.substring(0,rootUrl.length) === rootUrl || url.indexOf(':') === -1;
return isInternalLink;
};
URB = {
bootstrap: function() {
URB.cleanUpDomForInit();
URB.ajaxifyLinks('body');
URB.ajaxifySelectBox('body');
$(window).bind('statechange', function() {
var State = History.getState();
var html = '<div class="twelve columns">'+State.data.content+'</div>';
URB.updateBelly(html);
});
// Initialize Model
URB.loadExternalJS(base_url + 'javascripts/URB/URB.Model.js');
var checkModel = setInterval(function() {
if(typeof URB.Model != 'undefined') {
URB.Model.proxy('api/article', null, null, function(data) {
console.log(data);
});
clearInterval(checkModel);
}
}, 100);
},
belly:
$("#belly"),
isMobile:
window.matchMedia('only screen and (max-width: 767px)').matches ? true : false,
isTablet:
window.matchMedia('only screen and (min-width: 768px) and (max-width: 1024px)').matches ? true : false,
isDesktop:
window.matchMedia('only screen and (min-width: 1025px)').matches ? true : false,
loadExternalJS: function(url) {
$.ajax({
type: "GET",
url: url,
dataType: "script"
});
},
updateBelly: function(html) {
URB.belly.html(html);
},
ajaxifyLinks: function(elm) {
var $this = $(elm);
$this.find('a:internal:not(.no-ajaxy)').click(function(e) {
if(e.which == 2 || event.metaKey)
return true;
var
$this = $(this),
url = $this.attr('href'),
title = $this.attr('title') || null;
var stateData = {
content: title
};
History.pushState(stateData, title, url);
var html = '<div class="twelve columns">'+stateData.content+'</div>';
URB.updateBelly(html);
e.preventDefault();
return false;
});
},
ajaxifySelectBox: function(elm) {
var $this = $(elm);
$this.find('select.ajaxify').change(function(e) {
var
$this = $(this),
url = $this.val(),
title = $this.children("option:selected").text();
if($this.children("option:selected").attr('data-open-new-window') == 1) {
console.log("Open in new window: " + url);
}
else {
var stateData = {
content: title
};
History.pushState(stateData, title, url);
console.log(title);
var html = '<div class="twelve columns">'+stateData.content+'</div>';
URB.updateBelly(html);
}
e.preventDefault();
return false;
});
},
cleanUpDomForInit: function() {
if(URB.isMobile) {
URB._cleanDom(functionRegistrations.mobile, '.show-for-medium, .show-for-large, .show-for-large-up, .show-for-medium-down, .show-for-xlarge');
}
if(URB.isTablet) {
URB._cleanDom(functionRegistrations.tablet, '.show-for-large, .show-for-large-up, .show-for-xlarge, .show-for-small');
}
if(URB.isDesktop) {
URB._cleanDom(functionRegistrations.desktop, '.show-for-small');
}
},
_cleanDom: function(elms, css) {
$(css).each(function(index, elm) {
$(elm).remove();
});
for(i in elms) {
elms[i]();
}
}
};
URB.bootstrap();
});
$(文档).ready(函数(){
var历史=window.History;
$.expr[':'].internal=函数(对象、索引、元、堆栈){
var rootUrl=History.getRootUrl()
变量
$this=$(obj),
url=$this.attr('href')| |',
isInternalLink;
isInternalLink=url.substring(0,rootUrl.length)==rootUrl | | url.indexOf(':')==-1;
返回isInternalLink;
};
城市={
引导:函数(){
URB.cleanUpDomForInit();
城市ajaxifyLinks(“主体”);
城市ajaxifySelectBox(“主体”);
$(窗口).bind('statechange',function()){
var State=History.getState();
var html=''+State.data.content+'';
URB.updateBelly(html);
});
//初始化模型
loadExternalJS(base_url+'javascripts/URB/URB.Model.js');
var checkModel=setInterval(函数(){
if(城市模型的类型!=“未定义”){
URB.Model.proxy('api/article',null,null,函数(数据){
控制台日志(数据);
});
clearInterval(检查模型);
}
}, 100);
},
腹部:
美元(“#肚皮”),
伊斯梅尔:
window.matchMedia('仅屏幕和(最大宽度:767px)')。匹配?真:假,
isTablet:
window.matchMedia('仅屏幕和(最小宽度:768px)和(最大宽度:1024px)')。匹配?真:假,
isDesktop:
window.matchMedia('仅屏幕和(最小宽度:1025px)')。匹配?真:假,
loadExternalJS:函数(url){
$.ajax({
键入:“获取”,
url:url,
数据类型:“脚本”
});
},
updateBely:函数(html){
URB.belly.html(html);
},
AjaxyFylinks:函数(elm){
var$this=$(elm);
$this.find('a:internal:not(.no ajaxy)')。单击(函数(e){
if(e.which==2 | | event.metaKey)
返回true;
变量
$this=$(this),
url=$this.attr('href'),
title=$this.attr('title')| | null;
var状态数据={
内容:标题
};
pushState(stateData、title、url);
var html=''+stateData.content+'';
URB.updateBelly(html);
e、 预防默认值();
返回false;
});
},
ajaxifySelectBox:函数(elm){
var$this=$(elm);
$this.find('select.ajaxify').change(函数(e){
变量
$this=$(this),
url=$this.val(),
title=$this.children(“选项:选定”).text();
if($this.children(“选项:selected”).attr('data-open-new-window')==1){
log(“在新窗口中打开:+url”);
}
否则{
var状态数据={
内容:标题
};
pushState(stateData、title、url);
控制台日志(标题);
var html=''+stateData.content+'';
URB.updateBelly(html);
}
e、 预防默认值();
返回false;
});
},
cleanUpDomForInit:function(){
如果(城市伊斯莫比尔){
URB._cleanDom(functionRegistrations.mobile,“.显示中号、.显示大号、.显示大号向上、.显示中号向下、.显示xlarge”);
}
如果(城市列表){
URB._cleanDom(functionRegistrations.tablet,“.大屏幕显示,.大屏幕显示,.大屏幕显示,.小屏幕显示”);
}
if(城市isDesktop){
URB._cleanDom(functionRegistrations.desktop,'.show for small');
}
},
_cleanDom:函数(elms、css){
$(css).每个(函数(索引,elm){
$(elm.remove();
});
(我在榆树上){
榆树[i]();
}
}
};
URB.bootstrap();
});