小编ski*_*boo的帖子

如何使用hashbang网址处理Facebook分享/喜欢?

我正在建立一个网站,从主页我将在网站上打开一些其他URI到一个灯箱(AJAX),我想使用HTML5推送状态和哈希刘海作为后备来管理状态的变化.

现在我希望网址可以抓取,Facebook可分享/可爱.

如果用户浏览器支持HTML5推送状态,没问题,他可以共享URL(例如http://myserver/example:),Facebook会在静态内容中找到合适的OG metas.

但是如果用户使用HTML4浏览器,他会有一个网址http://myserver/#!/example.我希望他能够通过facebook分享它...

现在看起来Facebook支持_escaped_fragment_替换方法,所以我只是将请求重定向http://myserver/?_escaped_fragment_=/examplehttp://myserver/example ,每个人都应该开心...

所以我在我的htaccess中添加了重写条件:

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=([^&]*)
RewriteRule .* http://%{HTTP_HOST}/%1? [R=301,L,NE]
Run Code Online (Sandbox Code Playgroud)

我的问题是,我不能使它与Facebook一起工作,有了Facebook linter它似乎百分之一的时候,在hashbang之后的URL部分逃脱,导致像http://myserver/%2Fexample其中的网址 到404 :-(

有谁知道如何欺骗Facebook不逃避URL的这一部分?我可以在apache mod_rewrite端做点什么吗?

我也对任何其他有效的ajax可抓取/可喜欢的URL策略持开放态度;)

ajax mod-rewrite facebook hashbang pushstate

17
推荐指数
2
解决办法
2万
查看次数

Asual jQuery Address在Firefox中有错误吗?

这是我使用jQuery Address的第二个项目,我认为Firefox有些奇怪,或者至少我可以发现它在Firefox和Webkit中有不同的行为.

深度链接时,jQuery Address应触发change事件并执行与此状态相关的JavaScript.

对于/ foo/bar深层链接,如果我将事件对象写入控制台,在Google Chrome中,我有两个事件被触发:

jQuery.Event#1

path: "/"
pathNames: Array[0]
queryString: ""
timeStamp: 1335431580471
type: "change"
value: "/"
Run Code Online (Sandbox Code Playgroud)

jQuery.Event#2

path: "/foo/bar"
pathNames: Array[2]
queryString: ""
timeStamp: 1335431580471
type: "change"
value: "/foo/bar"
Run Code Online (Sandbox Code Playgroud)

但是在Firefox中,我只触发了一个事件,它没有考虑当前的URI:

jQuery.Event#1

path: "/"
pathNames: Array[0]
queryString: ""
timeStamp: 1335431580471
type: "change"
value: "/"
Run Code Online (Sandbox Code Playgroud)

很明显在Firefox中,我想为/ foo/bar URI打开的灯箱永远不会打开:-(

这是我的jQuery地址代码:

$.address.crawlable(1).state('/').change(function(event) {
    var page = event.path;
    if (page == '/foo/bar'){
        openLightbox($('#create-popup-template').html());
        create_main();
    }
});    
Run Code Online (Sandbox Code Playgroud)

现在我使用一个简单的解决方法使其在Firefox中工作,只需添加一个init函数来强制在Firefox中进行第二次更改事件:

$.address.init(function(){
    if ($.browser.mozilla)
         $.address.value(window.location.pathname);
 });
Run Code Online (Sandbox Code Playgroud)

但这是我第二次这样做,感觉不对..我错过了什么吗?

我也已经试图搞砸了内部和外部的变化回调,没有机会..

谢谢你的帮助,

托马斯.

firefox jquery jquery-address

11
推荐指数
1
解决办法
651
查看次数

回调jquery插件Isotope


我正在使用同位素(http://isotope.metafizzy.co)与可扩展项目,我想使用ScrollTo,以便我可以自动滚动到新扩展的项目..

我首先尝试使用reLayout方法进行回调,例如:

container.isotope('reLayout', iwannascroll(origin));

function iwannascroll(origin_with_newpos){
    $.scrollTo(origin_with_newpos, 800);                
}
Run Code Online (Sandbox Code Playgroud)

origin是一个变量,我从点击处理程序中放入"this".
不幸的是,我总是得到对象的旧位置..

实际上我不确定回调是否过早被调用,或者我是否无法理解如何存储我的jQuery对象使其更像是副本或"指针";-)

任何想法 ?

编辑:我现在确定在动画结束前调用回调,所以我的问题是:我现在怎么能完成动画?

jquery jquery-isotope

6
推荐指数
2
解决办法
8204
查看次数