在 Android 中的 window.open() 之后 setInterval() 不起作用

Posted

技术标签:

【中文标题】在 Android 中的 window.open() 之后 setInterval() 不起作用【英文标题】:setInterval() not working after window.open() in Android 【发布时间】:2015-04-16 21:17:41 【问题描述】:

只是一个小问题:我正在制作一个使用 Cordova 以 Angular 开发的混合应用程序,但是当我在 $window.open() 之后使用 setInterval() 函数时,setInterval 停止工作,但在 Chrome 中,它正在工作(但它是正常,新窗口在新标签页中打开)。

这是我的代码的摘录:

$http.post(url)
.success(function(result, status) 
    var windowWithings = $window.open(result.res);
    var intervalVerif = $window.setInterval(function ()
        $http.get(url)
        .success(function(result) 
            windowWithings.close();
            $window.cancelInterval(intervalVerif);
        )
        .error(function(error) 
            console.log(error);
        );
    , 2000);
)
.error(function(error, status) 
    console.log(status);
);

提前致谢!

编辑:

我对@9​​87654325@ 的搜索是每 2000 毫秒检查一次服务器是否从我打开的新窗口中获取信息。如果服务器没问题,我会关闭窗口以返回上一个。

当我说它不起作用时,我想说新窗口没有关闭,但如果我用警报更改代码,有时我会在新窗口有时间打开之前看到警报,但之后什么也没有

p>

对于 Chrome,我只想说,如果我在笔记本电脑上的 Chrome 中打开 Angular 应用程序,它可以工作,但如果我启动使用 Cordova 创建的 android 应用程序,它就不能工作。

【问题讨论】:

我真的不明白你想要完成什么,你应该更具体一点。 “setInterval 停止工作”——什么不工作,你期待什么。 “但在 chrome 中它可以工作”——如果你使用其他浏览器它可以工作吗? 我编辑我的帖子以获取更多信息。 【参考方案1】:

请使用 $timeout 并在注入参数中添加“$timeout”

$timeout(function ()
  $http.get(url)
  .success(function(result) 
    windowWithings.close();
    $window.cancelInterval(intervalVerif);
  )
  .error(function(error) 
    console.log(error);
  );, 2000);

【讨论】:

这不是我想做的超时,而是一个间隔(请参阅我对原始帖子的编辑)。我之前尝试过使用 $interval 但问题是一样的。

以上是关于在 Android 中的 window.open() 之后 setInterval() 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

从 Android 的 webview 同时处理 window.open() 时出现问题

IBM Worklight 6.0 - BlackBerry 10 中的 window.open() 失败

JavaScript中的window.location.href和window.open()方法

html中的Window.open问题[重复]

Chrome ios - iframe:window.open 不适用于 onload 处理程序

jquery 打开页面window.location和window.open的区别