這不是一個真正的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