中断 iframe 中的 JS
Interrupt JS in an iframe
我正在创建一个基于 QUnit 的自动化测试框架,我希望能够在测试时间过长(超时(时终止测试。现在,我目前的实现非常简单:在测试开始时,我设置了一个计时器并等待。如果测试到那时尚未完成,我会将其标记为失败,然后重新加载正在运行测试<iframe>
。
如果它正在等待 AJAX 调用,或者异步测试永远不会返回,这非常有用。但是,setTimeout
函数将始终在当前执行线程之后运行,因此,如果测试进入无限循环,或者只是在其标准执行中花费了太长时间,它不会真正停止它,而只是坐下来等待轮到它而不中断它。有没有办法取消子<iframe>
(在同一域中(中代码的执行,即使它卡在循环中?
在父窗口中定义计时器 - 当 IFrame 加载时,让它在父窗口中启动计时器 - 当计时器用完时,让父窗口重新加载 IFrame。
在父页面中
<script>
function startTimer(duration) {
setTimeout("timedOut()",duration);
}
function timedOut() {
// handle time out
}
</script>
<iframe id=myFrame></iframe>
在你的伊弗拉梅
<script>
parent.startTimer(duration);
</script>
每个页面在不同的线程上运行,所以它应该适合你,但有些事情会锁定整个浏览器系统(无限循环/无限递归(,你必须让任务管理器参与重启浏览器,但它应该涵盖大部分情况。
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- react.js中的密钥绑定
- Node.js中的JavaScript原型对象效率
- dropdown.js中的复杂事件处理
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- JS中的按钮和文本输入
- 手动触发ember.js中的属性更改
- Node JS中的排名系统算法
- 如何在渲染视图时将变量传递给Node.js中的脚本标记
- 渲染”;a“;React.js中的可选href
- Node.js中的谷歌地图几何库
- JS中的乘法不起作用
- 你能把grunt.js中的linter改成jslint吗
- 如何将输入范围的值传递给JS中的变量
- 使用指令的angular js中的Like和different
- Angularjs:修改js中的作用域,稍后在页面中使用
- 计算php或js中的距离
- 从JS中的字符串中读取数字的库
- 纸张.js中的线条变形
- 如何使用React JS中的循环,根据条件渲染或不渲染表数据