Rails:如何防止在显示swf flash文件时单击链接

时间:2010-03-22 08:56:36

标签: ruby-on-rails flash before-filter

我正在寻找一种防止我的rails应用中的链接在swf文件处于活动状态时有效的好方法......

我可以使用before_filter吗?或者我需要javascript吗?

马库斯

2 个答案:

答案 0 :(得分:0)

你需要使用JavaScript,但是如果你使用像jQuery这样的库,那很容易让人感到轻松。

加载Flash内容后,您只需创建一个JS变量,然后:

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

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

要重新启用,只需:

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

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

希望它可以帮到你

<强>更新

如你所说,你对jQuery或JavaScript没有多少经验,我写了一个更好的例子。

不是禁用链接(用户不太友好),为什么不简单地隐藏它们?

我举了一个例子here :,但代码会做类似的事情:

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>

使用Rails here

对jQuery进行了很好的介绍

答案 1 :(得分:0)

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

您可以使用以下内容:

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

在你的ActionScript中。

希望有所帮助。