Flex アプリがフォーカスを失ったかどうかを検出するにはどうすればよいですか

StackOverflow https://stackoverflow.com/questions/46915

  •  09-06-2019
  •  | 
  •  

質問

この質問のフォローアップとして: オンライン試験アプリケーションを開発する場合、不正行為を防ぐにはどうすればよいですか?

Flex アプリケーションがフォーカスを失ったことを検出できますか?それは、ユーザーが別のアプリケーションをクリックしたか、ブラウザのタブを開いた場合ですか?

これを読みました: Flex アプリケーションがフォーカスを失ったときの検出 しかし、あまり明確ではありませんでした...

役に立ちましたか?

解決

そのリンクにあるコードの重要な部分は、

systemManager.stage.addEventListener(Event.DEACTIVATE,deactivate);

Flash プレーヤーは、フォーカスがプレーヤーに出入りするときに、アクティブ化イベントと非アクティブ化イベントを送信します。あなたがする必要があるのは、それらのリスナーを作成し、適切に反応することだけです。

イベントをアクティブ化および非アクティブ化するための使用方法のより明確な例は、次の場所で見ることができます。 blog.flexaxamples.com.

また、一部のブラウザでは、activate イベントと deactivate イベントに問題があるようです。 詳細については、Colin Moock がここで説明しています。

他のヒント

メインのアプリケーションタグに activate のハンドラーを追加できます。これにより、flex アプリケーションがフォーカスされるたびに検出されます。例えば:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalAlign="middle" backgroundColor="white" activate="activateHandler(event);" deactivate="deactivateHandler(event);">

これは、Flex ウィンドウがフォーカスを失ったときを検出するには機能しますが、実際に Flex アプリをクリックせずにウィンドウがフォーカスを取り戻したときを検出するには、HTML ラッパーの更新が必要ですよね。何かのようなもの:

<script language="JavaScript" type="text/javascript">
<!--
// -----------------------------------------------------------------------------
// Globals
// Major version of Flash required
var requiredMajorVersion = ${version_major};
// Minor version of Flash required
var requiredMinorVersion = ${version_minor};
// Minor version of Flash required
var requiredRevision = ${version_revision};
// -----------------------------------------------------------------------------
// -->


    function onAppFocusIn()
    {
        ${application}.onAppFocusIn();
        alert("onAppFocusIn");
    }

</script>
<body scroll="no" onFocus="onAppFocusIn()">

これを実装しようとしていますが、フレックスアプリウィンドウに戻るとonAppFocusIn()関数が実行されません。ソースを見るとコードが載っています。理由を知っている人はいますか??

ありがとう、アニー

Flex 4.6では、このコマンドはSystemManager.stage.addeventListener(event.dectivate、deactivate)に動作しますが、Flashアプリwmodeがウィンドウ(デフォルト)に設定されていることを確認してください。wmode が透過的である場合、イベントは捕捉されませんでした。Flash アプリを配置する埋め込み HTML で wmode を設定します。例:

<object classid="clsid:D27WEE-A16D-21cf-90F2-422253540410" width="100%" height="100%"
id="MyApp" name="MyApp" align="middle">
<param name="movie" value="MyApp.swf?v=1.00.008" />
<param name="wmode" value="transparent">      <----- take out this

...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top