我正在寻找一种防止我的rails应用中的链接在swf文件处于活动状态时有效的好方法......
我可以使用before_filter吗?或者我需要javascript吗?
马库斯
答案 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中。
希望有所帮助。