2016-01-23 56 views
1

我想在全屏幕中演示我的窗口。如何在成功ajax调用后执行JS函数?

我有一个工作的功能,但我有一个问题:

我在UI的一些按钮,发送后用户点击一个AJAX调用,得到一些数据,并准备吧,这个AJAX调用之后(上success我想证明在全屏我的数据,但我不能这样做,因为它会引发错误: Failed to execute 'requestFullScreen' on 'Element': API can only be initiated by a user gesture.

正如你明白,我有用户操作 - 点击按钮,但是这还不够,如果我试图在ajax调用中执行fullscreen function

我试着g也要使用全局变量,有一个状态(我是否需要显示全屏或不显示(这取决于响应解析的结果(在AJAX调用后)),但它不起作用。我试图这样:

ISFULLSCREEN = false; 

function get_ajax() { 
    ajax_call() 
    .success(response) { 
     if (response.fullscreen) { 
      ISFULLSCREEN = true; 
     } 
    } 
} 


function useFullscreen() { 
    if (ISFULLSCREEN) { 
     use_fullscreen(); 
    } 
} 

和我的按钮看起来像:

<button onclick="get_ajax();useFullscreen()" value="click me" /> 

但功能useFullscreen运行速度更快,比ISFULLSCREEN变化true

价值做对某人有任何想法如何解决这个问题?

非常感谢!

+1

你可以叫useFullscreen里面你成功功能。 – Avi

+0

@Avi他们说在执行失败的问题 –

+1

我不能,它引发了同样的错误:“无法执行'元素'requestFullScreen':API只能由用户的手势发起。”这是我的第一个实现 – pivanchy

回答

1

也许在您的ajax请求中,使用async: false使提取同步,因此保持所有执行都在同一个事件中(从用户单击)。

这样做的缺点是,如果它需要很长的时间,可能挂在网页

+0

它看起来像一个解决办法,但不是一个解决方案,可惜 – pivanchy

+0

我能想到的唯一的另一种方法是,当用户点击这个按钮,它就会立即切换到全屏模式,然后你展示一些负载或请稍候屏幕,而阿贾克斯熄灭并完成其行动 –

+0

这不是一个解决方案也是如此,因为我并不需要有一个全屏模式始终。我解析AJAX响应中的数据,之后我知道:我需要全屏还是不需要.. – pivanchy

0

添加异步:假以Ajax调用,并呼吁阿贾克斯成功的功能useFullscreen和按钮onclick事件删除此