我正在寻找一种防止我的 rails 应用程序中的链接在 swf 文件处于活动状态时产生任何影响的好方法......
我可以用 before_filter 做到这一点吗?还是我需要javascript?
马库斯
我正在寻找一种防止我的 rails 应用程序中的链接在 swf 文件处于活动状态时产生任何影响的好方法......
我可以用 before_filter 做到这一点吗?还是我需要javascript?
马库斯
@mplacona 的响应很好,但问题是当您的 SWF 被停用时,您将如何调用这些函数。如果您有权访问创建 SWF 的 Flash 源,则需要使用 调用函数ExternalInterface
,但我无法快速找到如何检测舞台何时变得不可见(它是舞台上的事件处理程序,例如当然)。但是,您无疑是在 ActionScript 中执行此操作的,因此无论何时调用 close,您也可以调用 ExternalInterface 方法,该方法调用启用链接的 javascript。
你会使用这样的东西:
ExternalInterface.call('changeLinks', 'enable');
在您的 ActionScript 中。
希望能有所帮助。
为此,您需要使用 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 的介绍