所有的功勞都應該給那些爲我的問題提供正確有價值答案的人。
我決定爲將來尋求這個問題的答案的人作出很好的回答。
我基本上將我的答案分爲兩部分。
至於我的原始問題,我需要一個超鏈接解決方案。
因此第一種方法是超鏈接
正如@ Jeemusu的評論。
Fancybox使用AJAX加載內容。有一個名爲HTTP_X_REQUESTED_WITH
的HTTP變量集,如果它是AJAX請求,它將被設置並設置爲'xmlhttprequest'
。
因此,即使有人打開新選項卡中的鏈接,我們可以檢查它是否是AJAX
或non-AJAX
並根據此顯示內容。所以不用擔心右鍵單擊。
<?php
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
//this is an ajax request. do what you need to
}
else {
//this is non ajax. do what you need
}
?>
第二個選項是將超鏈接更改爲按鈕或任何div。
一般的想法是獲得'open-in-same-window'
功能,同時排除所有'open-in-new-window'
的可能性。
正如@ Scuzzy的和@ techfoobar的答案
<input type="button" value="click here" class="fake-fancy" data-href="linktothereportform?id=5">
<span class="fake-fancy" data-href="linktothereportform?id=5">Report</span>
<script type="text/javascript">
jQuery('.fake-fancy').click(function(){
jQuery.fancybox.open({
href: jQuery(this).attr('data-href'),
type: 'ajax'
});
});
</script>
OR
jQuery('a.report').each(function(){jQuery(this).replaceWith('<button onclick="window.location.href=\'' + jQuery(this).attr('href') + '\'">report</button>');});
你能一個div或按鈕元素上使用onclick事件,並通過函數調用手動調用的fancybox? – Scuzzy 2013-03-22 03:54:12
@Scuzzy對不起朋友,我沒有得到你。 – vinu 2013-03-22 03:55:21
由於fancybox通過ajax請求表單,您可以檢查'$ _SERVER ['HTTP_X_REQUESTED_WITH']'變量以查看頁面是否通過ajax請求,並且如果不阻止它顯示錶單。 – Jeemusu 2013-03-22 03:59:05