所有的功劳都应该归功于那些为我的问题提供正确有价值答案的人。
我决定为将来寻求这个问题答案的人做一个很好的答案。
我基本上会将我的答案分为两部分。
至于我最初的问题,我需要一个带有超链接的解决方案。
所以第一种方法是超链接
正如@Jeemusu 的评论。
Fancybox 使用 AJAX 加载内容。有一个名为 的 HTTP 变量集, 如果它是 AJAX 请求HTTP_X_REQUESTED_WITH
,它将被设置并设置为。'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>
或者
jQuery('a.report').each(function(){jQuery(this).replaceWith('<button onclick="window.location.href=\'' + jQuery(this).attr('href') + '\'">report</button>');});