- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有相当多的标准规则是在 URL 的末尾添加斜线:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [R=301,L]
Ajax 照片库正在向 URL 添加一些带有哈希 # 的内容,例如 URL/#photoset_photo_empty_progress
。我不明白 htaccess 会阻止什么或对哈希字符串执行什么操作。但它搞砸了,画廊停止工作。
我的想法是这里可能需要 htaccess 的一些魔法来避免将此规则应用于哈希字符串。
请给我一个解决方案,因为我什至不明白那里出了什么问题。
var ls = ls || {};
ls.photoset =( function ($) {
this.idLast=0;
this.isLoading=false;
this.swfu;
this.initSwfUpload = function(opt) {
opt=opt || {};
opt.button_placeholder_id = 'photoset-start-upload';
opt.post_params.ls_photoset_target_tmp = $.cookie('ls_photoset_target_tmp') ? $.cookie('ls_photoset_target_tmp') : 0;
$(ls.swfupload).unbind('load').bind('load',function() {
this.swfu = ls.swfupload.init(opt);
$(this.swfu).bind('eUploadProgress',this.swfHandlerUploadProgress);
$(this.swfu).bind('eFileDialogComplete',this.swfHandlerFileDialogComplete);
$(this.swfu).bind('eUploadSuccess',this.swfHandlerUploadSuccess);
$(this.swfu).bind('eUploadComplete',this.swfHandlerUploadComplete);
}.bind(this));
ls.swfupload.loadSwf();
}
this.swfHandlerUploadProgress = function(e, file, bytesLoaded, percent) {
$('#photoset_photo_empty_progress').text(file.name+': '+( percent==100 ? 'resize..' : percent +'%'));
}
this.swfHandlerFileDialogComplete = function(e, numFilesSelected, numFilesQueued) {
if (numFilesQueued>0) {
ls.photoset.addPhotoEmpty();
}
}
this.swfHandlerUploadSuccess = function(e, file, serverData) {
ls.photoset.addPhoto(jQuery.parseJSON(serverData));
}
this.swfHandlerUploadComplete = function(e, file, next) {
if (next>0) {
ls.photoset.addPhotoEmpty();
}
}
this.addPhotoEmpty = function() {
template = '<li id="photoset_photo_empty"><img src="'+DIR_STATIC_SKIN + '/images/loader.gif'+'" alt="image" style="margin-left: 35px;margin-top: 20px;" />'
+'<div id="photoset_photo_empty_progress" style="height: 60px;width: 350px;padding: 3px;border: 1px solid #DDDDDD;"></div><br /></li>';
$('#swfu_images').append(template);
}
this.addPhoto = function(response) {
$('#photoset_photo_empty').remove();
if (!response.bStateError) {
template = '<li id="photo_'+response.id+'"><img src="'+response.file+'" alt="image" />'
+'<textarea onBlur="ls.photoset.setPreviewDescription('+response.id+', this.value)"></textarea><br />'
+'<a href="javascript:ls.photoset.deletePhoto('+response.id+')" class="image-delete">'+ls.lang.get('topic_photoset_photo_delete')+'</a>'
+'<span id="photo_preview_state_'+response.id+'" class="photo-preview-state"><a href="javascript:ls.photoset.setPreview('+response.id+')" class="mark-as-preview">'+ls.lang.get('topic_photoset_mark_as_preview')+'</a></span></li>';
$('#swfu_images').append(template);
ls.msg.notice(response.sMsgTitle,response.sMsg);
} else {
ls.msg.error(response.sMsgTitle,response.sMsg);
}
ls.photoset.closeForm();
}
this.deletePhoto = function(id)
{
if (!confirm(ls.lang.get('topic_photoset_photo_delete_confirm'))) {return;}
ls.ajax(aRouter['photoset']+'deleteimage', {'id':id}, function(response){
if (!response.bStateError) {
$('#photo_'+id).remove();
ls.msg.notice(response.sMsgTitle,response.sMsg);
} else {
ls.msg.error(response.sMsgTitle,response.sMsg);
}
});
}
this.setPreview =function(id)
{
$('#topic_main_photo').val(id);
$('.marked-as-preview').each(function (index, el) {
$(el).removeClass('marked-as-preview');
tmpId = $(el).attr('id').slice($(el).attr('id').lastIndexOf('_')+1);
$('#photo_preview_state_'+tmpId).html('<a href="javascript:ls.photoset.setPreview('+tmpId+')" class="mark-as-preview">'+ls.lang.get('topic_photoset_mark_as_preview')+'</a>');
});
$('#photo_'+id).addClass('marked-as-preview');
$('#photo_preview_state_'+id).html(ls.lang.get('topic_photoset_is_preview'));
}
this.setPreviewDescription = function(id, text)
{
ls.ajax(aRouter['photoset']+'setimagedescription', {'id':id, 'text':text}, function(result){
if (!result.bStateError) {
} else {
ls.msg.error('Error','Please try again later');
}
}
)
}
this.getMore = function(topic_id)
{
if (this.isLoading) return;
this.isLoading=true;
ls.ajax(aRouter['photoset']+'getmore', {'topic_id':topic_id, 'last_id':this.idLast}, function(result){
this.isLoading=false;
if (!result.bStateError) {
if (result.photos) {
$.each(result.photos, function(index, photo) {
var image = '<li><a class="photoset-image" href="'+photo.path+'" rel="[photoset]" title="'+photo.description+'"><img src="'+photo.path_thumb+'" alt="'+photo.description+'" /></a></li>';
$('#topic-photo-images').append(image);
this.idLast=photo.id;
$('.photoset-image').unbind('click');
$('.photoset-image').prettyPhoto({
social_tools:'',
show_title: false,
slideshow:false,
deeplinking: false
});
}.bind(this));
}
if (!result.bHaveNext || !result.photos) {
$('#topic-photo-more').remove();
}
} else {
ls.msg.error('Error','Please try again later');
}
}.bind(this));
}
this.upload = function()
{
ls.photoset.addPhotoEmpty();
ls.ajaxSubmit(aRouter['photoset']+'upload/',$('#photoset-upload-form'),function(data){
if (data.bStateError) {
$('#photoset_photo_empty').remove();
ls.msg.error(data.sMsgTitle,data.sMsg);
} else {
ls.photoset.addPhoto(data);
}
});
ls.photoset.closeForm();
}
this.closeForm = function()
{
$('#photoset-upload-form').jqmHide();
}
this.showForm = function()
{
var $select = $('#photoset-start-upload');
if ($select.length) {
var pos = $select.offset();
w = $select.outerWidth();
h = $select.outerHeight();
t = pos.top + h - 30 + 'px';
l = pos.left - 15 + 'px';
$('#photoset-upload-form').css({'top':t,'left':l});
}
$('#photoset-upload-form').show();
}
this.showMainPhoto = function(id) {
$('#photoset-main-preview-'+id).css('width',$('#photoset-main-image-'+id).outerWidth());
$('#photoset-photo-count-'+id).show();
$('#photoset-photo-desc-'+id).show();
}
return this;
}).call(ls.photoset || {},jQuery);
最佳答案
Ajax photo gallery is making some additions with hash # to the URL like
URL/#photoset_photo_empty_progress
. I can't understand what htaccess blocks or does to hash string. But it screws this and gallery stops to work.
#
是 URL fragment 的一部分浏览器使用它来确定它应该如何处理内容。它用于告诉浏览器滚动到页面的特定部分的命名 anchor ,以及由 javascript(在浏览器/客户端上)使用。 片段永远不会在请求中发送到服务器。服务器根本看不到该片段,它仅特定于客户端。
如果您向网络服务器发送请求:http://myserver.com/index.php#site-map
,服务器在请求中看到的唯一内容是 GET/index.php HTTP/1.1
。没有 #site-map
。因此,您的重定向实质上删除了由 javascript 放置在那里的片段。无法通过服务器绕过它,因为它不知道浏览器是否持有片段。
可能的解决方法:
关于javascript - htaccess 搞砸了 Ajax 哈希 # 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12648001/
HTTP缓存相关的问题好像是前端面试中比较常见的问题了,上来就会问什么cache-control字段有哪些,有啥区别啥的。嗯……说实话,我觉得至少在本篇来说,HTTP缓存还算不上复杂,只是字段稍
代理,其实全称应该叫做代理服务器,它是客户端与服务器之间得中间层,本质上来说代理就是一个服务器,在HTTP的链路中插入的一个中间环节,就是代理服务器啦。所谓的代理服务就是指:服务本身不生产内容,
我们在前两篇的内容中分别学习了缓存和代理,大致了解了缓存有哪些头字段,代理是如何服务于服务器和客户端的,那么把两者结合起来,代理缓存,也就是说代理服务器也可以缓存,当客户端请求数据的时候,未必一
在前面的章节,我们把HTTP/1.1的大部分核心内容都过了一遍,并且给出了基于Node环境的一部分示例代码,想必大家对HTTP/1.1已经不再陌生,那么HTTP/1.1的学习基本上就结束了。这两
我们前一篇学习了HTTP/2,相比于HTTP/1,HTTP/2在性能上有了大幅的改进,但是HTTP/2因为底层还是基于TCP协议的,虽然HTTP/2在应用层引入了流的概念,利用多路复用解决了队头
前面我们花了很大的篇幅来讲HTTP在性能上的改进,从1.0到1.1,再到2.0、3.0,HTTP通过替换底层协议,解决了一直阻塞性能提升的队头阻塞问题,在性能上达到了极致。 那么,接下
上一篇噢,我们搞明白了什么是安全的通信,这个很重要,特别重要,敲黑板!! 然后,我们还学了HTTPS到底是什么,以及HTTPS真正的核心SSL/TLS是什么。最后我们还聊了聊TLS的实
经过前两章的学习,我们知道了通信安全的定义以及TLS对其的实现~有了这些知识作为基础,我们现在可以正式的开始研究HTTPS和TLS协议了。嗯……现在才真正开始。 我记得之前大概聊过,当
这一篇文章,我们核心要聊的事情就是HTTP的对头阻塞问题,因为HTTP的核心改进其实就是在解决HTTP的队头阻塞。所以,我们会讲的理论多一些,而实践其实很少,要学习的头字段也只有一个,我会在最开始
我们在之前的文章中介绍HTTP特性的时候聊过,HTTP是无状态的,每次聊起HTTP特性的时候,我都会回忆一下从前辉煌的日子,也就是互联网变革的初期,那时候其实HTTP不需要有状态,就是个浏览页面
前面几篇文章,我从纵向的空间到横向的时间,再到一个具体的小栗子,可以说是全方位,无死角的覆盖了HTTP的大部分基本框架,但是我聊的都太宽泛了,很多内容都是一笔带过,再加上一句后面再说就草草结束了。
大家好,我是煎鱼。 在 Go 语言中总是有一些看上去奇奇怪怪的东西,咋一眼一看感觉很熟悉,但又不理解其在 Go 代码中的实际意义,面试官却爱问... 今天要给大家介绍的是 SliceHead
我是一名优秀的程序员,十分优秀!