相关疑难解决方法(0)

如何使用javascript停止所有超时和间隔?

我正在开发一个包含许多运行超时和间隔的ajax web应用程序.现在我需要清除所有正在运行的超时和间隔.是否有一种简单的方法来阻止所有内容而无需存储每个超时和间隔ID并迭代它们并清除它们?

javascript

45
推荐指数
6
解决办法
5万
查看次数

如何清除所有间隔?

我在用

varName = setInterval(function() { ... }, 1000);
Run Code Online (Sandbox Code Playgroud)

在我正在编写的jquery插件中设置几个间隔,但是当重新加载插件时,我需要清除这些间隔.我尝试将它们存储在变量中,如下所示:

(function($){
$.mosaicSlider = function(el) {
    var base = this;        
    var transitionInterval, mainInterval;

...

base.init = function() {
    mainInterval = setInverval(function() { ... }, 1000);
}

base.grid = function() {
    this.transition() = function() {
         transitionInterval = setInterval(function(...) {
    }
}

base.init();
Run Code Online (Sandbox Code Playgroud)

我尝试在base.init()函数中杀死这些间隔,如下所示:

clearInterval(transitionInterval);
clearInterval(mainInterval);
Run Code Online (Sandbox Code Playgroud)

像这样:

window.oldSetInterval = window.setInterval;
window.setInterval = new function(func, interval) {  }
Run Code Online (Sandbox Code Playgroud)

javascript jquery set

41
推荐指数
3
解决办法
7万
查看次数

我应该使用iframe而不是ajax吗?

我们正在构建一个带有音频播放器的Drupal站点,该站点应该在您浏览页面时继续播放(类似于soundcloud).

目前我们正在<a>使用ajax 加载clicked 的网站并将html注入页面并使用history.js来操作该位置.

但是有一个主要的缺点:

由于新加载的页面上可能有不同的css和js,我们必须将当前脚本,样式和链接元素与ajax响应文本(丑陋的正则表达式)进行比较,并且只添加新的但不存在的元素.通过这样做,加载另一个页面一旦执行脚本就不会删除/删除/撤消.这可能会成为一个性能问题(反正是针对标记的正则表达式).

使用iframe可以解决这个问题和其他问题:

首次单击站点上的链接时,页面内容将替换为仅加载页面的iframe.音频播放器位于原始dom中,即在iframe之外.单击iframe内的链接可以在历史API中捕获并使用.

所以,虽然我从未想过我会这么认为:我认为使用iframe可能是更好的选择,不是吗?

PS:我的主要问题是我无法控制网站上的不同页面有不同的脚本,样式确实没问题.如果网站上只有一个巨大的静态js和css,我没有遇到任何问题.

更新

除了在iOS中,iframe解决方案工作正常.iframes就像地狱一样.不过,我认为我们将采用iframe解决方案.

ajax iframe jquery drupal html5-history

10
推荐指数
1
解决办法
1238
查看次数

标签 统计

javascript ×2

jquery ×2

ajax ×1

drupal ×1

html5-history ×1

iframe ×1

set ×1