【问题标题】:Popping a modal with Javascript使用 Javascript 弹出模式
【发布时间】:2012-03-04 05:20:09
【问题描述】:

我在一个 html 文件中有以下内容:

<div id='confirm'>
  <div class='header'><span>Stay Online</span></div>
  <div class='message'></div>
  <div class='buttons'>
    <div class='no simplemodal-close'>No</div><div class='yes'>Yes</div>
  </div>
 </div> 

这是来自http://www.ericmmartin.com/projects/simplemodal-demos/的简单模态

我创建了一个 java 脚本计时器

if (iniTimer == 15){ 
  // call the Confirm class to launch the confirm box. 
} 
iniTimer = setTimeout("ClockCount()",1000);

在它自己的 .js 文件中,当计时器等于 15 秒时,我希望它从 javascript 中弹出这个 div。这可能吗?如果可以,请告诉我该怎么做?

非常感谢,

弗兰克 G.

【问题讨论】:

  • “调用这个 div”是什么意思?
  • 嗯,我在 HTML 页面上有
    代码在这里...
    现在这个 div 用于调用 jquery 函数。如果我使用按钮或超链接,我可以调用它,但我需要在计时器达到 15 秒后自动调用它。如果调用测试,则会弹出一个确认框。明白了吗?
  • 但是,你想用那个 div 做什么?什么动作?
  • 我还是不明白。当您说“此处的代码”时,您是指 JavaScript 代码吗?或者你是说你目前已经使用 jQuery 来分配一个“点击”处理程序,以便当点击 div 时“某事”发生,但现在你希望“某事”从计时器自动发生?为什么这被标记为 CSS 问题?显示您的代码...
  • 为了帮助你了解更多我正在使用这个 jquery ericmmartin.com/projects/simplemodal-demos modal 并且在确认演示中如果你点击 Demo 会弹出一个确认框或者你可以这样调用它Demo 但我需要 javascript 在计时器到时自动为我调用它。而且因为它不是一个函数,所以我不知道如何调用类 ID。希望这可以帮助。再次感谢!

标签: javascript jquery


【解决方案1】:

假设您已经设置了类似的东西

confirm("Stay on page?", function () {
   cnt = 15;
   tId = setInterval(ClockCount,1000);
});

var cnt=15,tId;    
function ClockCount() {
  cnt--;
  if (cnt<=0) {
    $("confirm").click();
  }
}

tId = setInterval(ClockCount,1000);

【讨论】:

  • 你好 Mplugjan,这有点工作......当计时器达到 15 秒时。它调用确认并显示保持在线和是和否,但它不在课程中。这意味着它只是显示为文本。这是我正在调用的代码:
    保持在线
    Yes
  • 查看更新 - 我假设您也需要更改确认以处理超时
【解决方案2】:

好的,这个问题有点难以理解,但我认为你要问的是“我有一个带有事件(可能是点击?)绑定的 DIV ; 我如何触发该事件,就像用户在设定的时间后触发一样?"

如果是这样,你可能有类似的东西:

<div id="test">bla bla...</div>
<script>
$("#test").click(doSomethingNifty);
window.setTimeout(function() {
    // I want to make $("#test") do something nifty after 15 seconds
}, 15 * 1000);
</script>

注意:您可能没有编写 $("#test").click() 行;它可能在您正在使用的库中。

如果这是您要寻找的,有几个答案。一种是只调用你连接的原始方法:

window.setTimeout(function() {
    doSomethingNifty.call($("#test"))
}, 15 * 1000);

更类似于 jQuery 的答案是使用触发方法:

window.setTimeout(function() {
    $("#test").trigger("click"); // or $("#test").click(); they mean the same
}, 15 * 1000);

使用触发选项的主要好处是,如果您有多个事件连接到#test,它将触发所有个事件(不仅仅是doSomethingNifty)。

您可以在 jQuery 网站上阅读有关触发器(或更短的“点击”表单)的更多信息:

http://api.jquery.com/trigger/

http://api.jquery.com/click/

因此,为了最终将其从抽象的答案转变为有形的答案,在您的情况下,我认为您想使用:

$(".confirm").click();

在您的超时处理程序中。希望对您有所帮助。

【讨论】:

  • 您需要从ericmmartin.com/projects/simplemodal-demos下载确认覆盖才能给出正确的答案。
  • 机器幽灵,就是这样!非常感谢。如果你不介意我还有一个问题。我基本上是在创建一个自动注销框。如果用户的空闲时间为 15 秒,则弹出确认框并说 Hey Your Idea to long Stay Online?是的,不,这一切现在都很好,但我现在遇到的问题是我的应用程序正在使用框架并在框架中说一个女巫是 10px x 10px 非常小,只是为了在后台运行注销脚本,然后你有主应用程序的框架 B。当框弹出时,它只会在框架 A 中弹出。
  • 有没有办法让它在帧 A 和 B 上弹出?再次感谢!
  • 没办法。您需要将帧转换为 div
  • 我还能使用 div 保留框架吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-23
  • 1970-01-01
  • 2016-03-31
  • 1970-01-01
  • 2015-11-04
相关资源
最近更新 更多