Lau*_*ura 6 ruby iframe ruby-on-rails
我希望只显示一个表单,如果它被拉到iframe中的页面上.我怎么做?有服务器端解决方案吗?
如果你正在使用JQuery ...(这里的安装说明:http://jquery.com/)
$(document).ready(function(){
if( window == window.top) { $('form#myform').hide(); }
});
Run Code Online (Sandbox Code Playgroud)
如果窗口不是最顶层的窗口,则只隐藏具有id"myform"的表单.
我想不出纯粹的服务器端方式,但你可以使用一些混合 javascript/rails。
假设您有一个专用的 iframe 布局模板,例如“layouts/iframe.erb”
你可以在头部放置一些 javascript 来检查它是否作为 iframe 加载,如果不是,则重定向到一个操作,并可能显示一条 flash 消息“只能在应用程序内加载此页面”
头部的 javascript/rails
<script type="text/javascript">
function parentExists()
{
return (parent.location == window.location)? true : false;
};
function check_modal(){
if (parentExists()) {
window.location = '<%= url_for( :controller => "home", :action => 'iframe_action', :iframe_fail => 'true')%>'}
}
check_modal()
</script>
Run Code Online (Sandbox Code Playgroud)
注意参数 :iframe_fail ,您可以在控制器中检查它,如果该参数存在,您可以做任何您想做的事情,例如显示 flash 消息或重定向
示例控制器
def iframe_action
if params[:iframe_fail]
flash[:notice] = 'can only load inside app'
else
#do something else
end
end
Run Code Online (Sandbox Code Playgroud)
不太漂亮,但可能会帮助你完成工作。
| 归档时间: |
|
| 查看次数: |
2615 次 |
| 最近记录: |