追加のスクリプト タグを使用せずに Windows Media Player イベントをサブスクライブするにはどうすればよいですか?

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

質問

Windows Media Player コントロールを HTML ページに埋め込んでいます。

<object width="720"
        height="480"
        id="Player"
        classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">
    <!-- <param> tags left out -->
</object>

コントロールからイベントをサブスクライブするには (例: PlayStateChange(newState))、を追加する必要があります <script> タグは次のようになります。

<script language="JScript" for="Player" event="PlayStateChange(newState)">
    var newStateText = document.createTextNode('' + newState);
    var playStateContainer = document.getElementById('PlayState');
    while (playStateContainer.firstChild) {
        playStateContainer.removeChild(playStateContainer.firstChild);
    }
    playStateContainer.appendChild(newStateText);
</script>

プレーンな JavaScript を通じてこれらのイベントをサブスクライブする方法はありませんか (余分なものなしで <script> コントロールのすべてのインスタンスで関心のあるすべてのイベントのタグ)?

コントロールの 5 つのインスタンスとサブスクライブしたいイベントが 5 つある場合、これは 25 個のスクリプト タグになります。さらに、コントロールは外部 JavaScript ファイル内のいくつかのライブラリ コードでラップされています。イベント処理コードも、クライアント アプリケーションの HTML 内ではなく、そこに存在する必要があります。

役に立ちましたか?

解決

によると この MSDN 記事 (セクションを参照 命名規則 そして オートマジック)、すべてのイベント ハンドラーを同じ内に記述することができます。 <script> タグ、関数に名前を付ける場合 objectname::eventname または objectname.eventname:

<script language="JScript">
function Player::playStateChange(newState) {
  ...
}

function Player.currentPlaylistChange(change) {
  ...
}
</script>

私はこれを試しませんでしたが。そしてもちろん、これはすべて IE 固有のものです。

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