0

我正在寻找一种防止我的 rails 应用程序中的链接在 swf 文件处于活动状态时产生任何影响的好方法......

我可以用 before_filter 做到这一点吗?还是我需要javascript?

马库斯

4

2 回答 2

0

@mplacona 的响应很好,但问题是当您的 SWF 被停用时,您将如何调用这些函数。如果您有权访问创建 SWF 的 Flash 源,则需要使用 调用函数ExternalInterface,但我无法快速找到如何检测舞台何时变得不可见(它是舞台上的事件处理程序,例如当然)。但是,您无疑是在 ActionScript 中执行此操作的,因此无论何时调用 close,您也可以调用 ExternalInterface 方法,该方法调用启用链接的 javascript。

你会使用这样的东西:

ExternalInterface.call('changeLinks', 'enable');

在您的 ActionScript 中。

希望能有所帮助。

于 2010-03-22T10:37:03.553 回答
0

为此,您需要使用 JavaScript,但如果您使用 jQuery 之类的库,则很容易。

加载 Flash 内容后,您可以简单地创建一个 JS 变量,然后:

$("a#click").onclick = function() { return false; }

这将禁用页面上的所有链接。

要重新启用,只需:

$("a#click").onclick = function() { return true; }

并且所有链接将再次重新启用。显然,您需要为启用和禁用链接添加一些逻辑,但它的基础(我自己的方法)如上所述。

希望对你有帮助

更新

正如您提到的,您对 jQuery 或 JavaScript 没有太多经验,我写了一个示例,它会做得更好。

而不是禁用链接(这不是非常用户友好),你为什么不简单地隐藏它们呢?

我在这里放了一个例子:,但代码会做类似的事情:

function changeLinks(mode){
  if(mode == "enable"){  
      alert("links enabled")
      $("a").toggle(); 
  }
  else{
      alert("links disabled")
      $("a").toggle(); 
  }
}

要将 jQuery 添加到您的页面,很简单:

<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

这里有一个很棒的关于 jQuery with Rails 的介绍

于 2010-03-22T09:33:57.013 回答