- PR -

Menuコントロール上でマウスオーバ時にwindow.onResizeイベント発生

1
投稿者投稿内容
Dee
会議室デビュー日: 2009/02/26
投稿数: 3
投稿日時: 2009-03-24 19:39
利用環境: VisualStudio2008
Menuコントロールを貼り付けた状態で、JavaScriptにてwindow.onResizeイベントにイベントハンドラを設定すると、メニュー上をマウスオーバする度にwindow.onResizeイベントが発生してしまいます。
onResizeイベントでは、重たいコンポーネントのリサイズを行っているので、メニューのマウスオーバではonResizeイベントの処理をしたくありません。

メニューのマウスオーバでonResizeを発生させない方法か、onResizeイベントハンドラ内で、イベントがメニューのマウスオーバからキックされたのかどうかを判断できる方法はないでしょうか。

コード:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <asp:Menu ID="Menu1" runat="server">
            <Items>
                <asp:MenuItem Text="Menu01" Value="Menu01">
                    <asp:MenuItem Text="Menu11" Value="Menu11"></asp:MenuItem>
                </asp:MenuItem>
                <asp:MenuItem Text="Menu02" Value="Menu02">
                    <asp:MenuItem Text="Menu21" Value="Menu21"></asp:MenuItem>
                </asp:MenuItem>
            </Items>
            </asp:Menu>
    
    </div>
    </form>
<script type="text/javascript">
//<![CDATA[
function window.onload() { 
    window.onresize = Resize;
}
function Resize() {
    alert("Resized");
}
//]]>
</script>
</body>
</html>

ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2009-03-25 01:22
メニューコントロールを貼り付けただけでなんでマウスオーバーすると
リサイズイベントが発生するのか調べませんか?

マウスオーバーとリサイズイベントは何の関係も無いです。

あるとしたら、スクリプトがどこかで介在しているはずです。

それを突き止めるのが先ですね。

alert(event && event.srcElement && event.srcElement.id && event.srcElement.id == "Menu1" ? "メニューから" : "リサイズイベントから");


べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2009-03-25 02:26
出力HTMLを見れば呼んでいるjavascriptがわかると思いますのでそれを含めてローカルに保存するなりして
地道にalertなどでデバッグしていけばわかるはずです。

とりあえず下記のみで発生しました(当方ie7)。(DOCTYPEを取ると起きませんね)
コード:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<SCRIPT type=text/javascript>
window.onresize = function() {
	alert(event); 
}
</SCRIPT>
<img id='imgtest'>
<input type="button" onclick="document.getElementById('imgtest').style.height='200px';">

Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2009-03-25 06:39
IE8, Firefox, Chrome, Safariで動作させてみましたが
ブラウザによって挙動が異なるようです。

asp:Menuコントロールは、クロスブラウザ対応になっているんですかね・・・

asp:Menuコントロールの使用を再検討されてはどうですか。

余談ですが、IE8では、asp:Menuコントロールが動作しないようです。
パッチが提供されています。

http://weblogs.asp.net/bleroy/archive/2009/03/23/asp-menu-fix-for-ie8-problem-available.aspx
_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
Dee
会議室デビュー日: 2009/02/26
投稿数: 3
投稿日時: 2009-03-25 13:15
ぴあちゃん さん、
べる さん、
Access さん、
回答ありがとうございました。

IE8のプロファイラなどでスクリプトを追ってみましたが、私のスキルでは手に負えませんでした。
event.srcElementもチェックしてみましたが、nullになっておりこれで判断はできませんでした。残念です。

Accessさんのおっしゃるように、Menuコンポーネントを使わないのが一番なのかもしれません。手間を考えるとちょっとブルーになりますが。

ありがとうございました。

[ メッセージ編集済み 編集者: Dee 編集日時 2009-03-25 13:16 ]
1

スキルアップ/キャリアアップ(JOB@IT)