所有的功劳都应该给那些为我的问题提供正确有价值答案的人。
我决定为将来寻求这个问题的答案的人作出很好的回答。
我基本上将我的答案分为两部分。
至于我的原始问题,我需要一个超链接解决方案。
因此第一种方法是超链接
正如@ 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