这不是一个真正的PHP问题,但更多的JavaScript问题。您可以通过在a
标记上添加rel='fancybox'
或class='fancybox'
属性并使用基本功能来使用fancybox。然后它会在iframe弹出窗口中打开href
部分。如果您在新选项卡中打开链接,它将在新选项卡中打开href
部件。
现在你也可以使用两个单独的链接。一个用于新选项卡/无JS链接,另一个用于弹出窗口。为此,您可以简单地将新标签链接添加为href
,因此默认行为是打开新标签页。
现在,使fancybox打开另一个页面,你可以做几件事情。一个是创建一个完全不同的链接,另一个则是当它的fancybox时在链接上附加一个参数。后者对于图像等静态内容效率较低,所以我更喜欢第一种。
现在,而不是常规JS开的fancybox做这样的事情:
<a href='newtab.html' data-fancylink='fancy.html' class='fancy'>open me</a>
<script>
$('.fancy').click(function() {
var href = $(this).data('fancylink');
if (href == undefined) {
href = $(this).attr('href'); //fall back to default when no fancylink
}
$.fancybox({
'autoScale': true,
'autoDimensions': true,
'centerOnScroll': true,
'type': 'iframe',
'href': href
});
});
</script>
编辑(由JFK):一般的想法是好的,但实际上面的脚本将无法工作没有以下调整:
<script>
$(document).ready(function() {
$('.fancy').click(function (e) {
e.preventDefault(); // you still need to prevent default behavior
var href = $(this).data('fancylink');
if (href == undefined) {
href = this.href; //fall back can be simplified this way
}
$.fancybox({
type: 'iframe',
href: href
});
});
}); // ready
</script>
见JSFIDDLE
谢谢你我认为就是这样。 Facebook和Pinterest的同时使用一个连接两个posibilities所以我想我可以这样做: open me 然后在newtab.php determin通过请求或获取内容是否在的fancybox或正常的网页,并相应地调整网站。 – ahojvole 2013-05-08 16:03:45
因为我把脚本放在A标签后面,所以我不需要ready函数。你对preventDefault的事情是正确的,但要添加一个完整的新脚本?你应该只是放入评论或改变它。 – 2013-05-08 21:00:16
@ahojvole。如果你想要一个带有参数的页面,你不需要'data-fancylink ='''部分。您可以加载'this.href'部分并将param添加到结果中。 – 2013-05-08 21:02:14