0

我有一个基于 WordPress 的网站,它使用 Fancybox v.2 在弹出窗口中显示帖子。显然,触发 Fancybox 的唯一方法是点击a带有特定回调类的标签。

所以它是:

<a href="<?php echo home_url(); ?>/?p=<?php the_ID(); ?>" class="filmloop various fancybox.iframe">

但是,当我通过直接永久链接返回网站时,它会将 single.php 作为单独的页面加载而不会弹出。所以解决方法是将参数放在直接URL中,回来重新加载页面时抓取它,将抓取的url放入锚点并触发点击。唯一的问题是如何在获取参数后破解 WordPress 以重新加载页面。

这是我在 single.php 中得到的:

function getURLParameter(name) {
    return decodeURI(
        (RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]
    );
}

我抢参数。然后:

window.location.replace("http://someurl.com");

这是棘手的部分。当页面被重定向时,如何存储参数以供以后使用。这种思维方式是否可能,还有其他想法吗?

4

2 回答 2

0

试试这个代码。只需将 ?p=123 替换为 #123 并触发 :D

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
      if(document.URL.indexOf("#")==-1) // If hash not present in url
            {
               if(document.URL.indexOf("?p=") > -1){ // Check if url has parameter ?p=
            var parameter = document.URL.split('?p=');
                    myhash = "#"+parameter[1];
            window.location.replace(parameter[0]+myhash)
                    }
            }
            else {
             // We got hash 
             // Now trigger
            var n = document.URL.split('#');
            href = "http://buffermow.com?p="+n[1];
            findHref = 'a[href="'+href+'"]';
            mylinktotrigger = $(findHref);
            $(mylinktotrigger).trigger('click');
            }
        });
</script> 
    </head>
    <body>
    <a href="http://buffermow.com?p=123" onclick="alert('its Done');" class="filmloop various fancybox.iframe">My fancy link</a>
    </body>
</html>
于 2013-08-20T15:08:40.243 回答
0

您可以在页面加载后触发点击

$(document).ready(function{}
    $('somelink').trigger('click');
});

这样,您就可以定位实例化 FancyBox 的页面上的链接。

于 2013-08-20T14:16:17.513 回答